我需要生成一个数据框,其中每行与另一个数据框的所有其他行之间的欧几里得距离最小。我的两个数据框都很大(约40,000行)。这是目前我能想到的方法。
x<-matrix(c(3,6,3,4,8),nrow=5,ncol=7,byrow = TRUE)
y<-matrix(c(1,4,4,1,9),nrow=5,ncol=7,byrow = TRUE)
sed.dist<-numeric(5)
for (i in 1:(length(sed.dist))) {
sed.dist[i]<-(sqrt(sum((y[i,1:7] - x[i,1:7])^2)))
}
但这只适用于i=j的情况。我需要做的是循环遍历每一行(y [1,1:7],然后y [2,1:7]等,直到i = 5)"y"数据帧与所有行的" x "数据帧(x [i,1:7])查找最小欧几里得距离。每次执行此操作时,我需要它为y数据帧的第i行和x数据帧的所有行的每个计算找到最小的欧几里得距离,并将其存储在另一个数据帧中。
sqrt(colSums((y[1, ] - t(x))^2))
计算了y
中第一行与x
中所有行的距离。你想要对于y
中的每一行都重复这个操作,并取得最小值吗? - alexis_laz