我想在每两个点之间计算以下等式,我不知道如何在整个数据集中应用它:
Point x y z
1 4 3 8
2 8 5 4
3 5 4 7
4 2 7 4
D1,2 = sqrt((x2-x1)²+ (y2-y1)²+( z2-z1)²)
答案 0 :(得分:0)
最好使用dist
来计算评论中建议的距离。
data.frame(as.matrix(dist(df[,-1], diag = TRUE, upper = TRUE)))
您也可以使用sapply
自行计算距离(或应用其他公式)
sapply(1:NROW(df), function(i)
sapply(1:NROW(df), function(j)
sqrt(diff(df$x[c(i,j)])^2 + diff(df$y[c(i,j)])^2 + diff(df$z[c(i,j)])^2)))
# [,1] [,2] [,3] [,4]
#[1,] 0.000000 6.000000 1.732051 6.000000
#[2,] 6.000000 0.000000 4.358899 6.324555
#[3,] 1.732051 4.358899 0.000000 5.196152
#[4,] 6.000000 6.324555 5.196152 0.000000