【发布时间】:2017-06-23 14:25:03
【问题描述】:
我有两个不同的数据框,它们的行数不同。我需要将一组函数应用于每个可能的行组合,其中一行来自第一个数据帧,另一行来自第二个数据帧。虽然我可以使用 for 循环来执行此任务,但我觉得必须有一种更有效的方法来完成它。下面给出一个例子。 D1 和 D2 是两个数据帧。我需要评估 D3,其中一列作为 x-y 平面中的欧几里得距离,第二列作为来自 D1 和 D2 的每一行对的 z 值的平方差。
D1<-data.frame(x=1:5,y=6:10,z=rnorm(5))
D2<-data.frame(x=19:30,y=41:52,z=rnorm(12))
D3<-data.frame(distance=integer(0),difference=integer(0))
for (i in 1:nrow(D1)){
for (j in 1:nrow(D2)) {
temp<-data.frame(distance=sqrt(sum((D1[i,1:2]-D2[j,1:2])^2)),difference=(D1[i,3]-D2[j,3])^2)
D3<-rbind(D3,temp)
}
}
谢谢
【问题讨论】:
标签: r function dataframe combinations vectorization