计算R中后续位置之间的欧几里德距离

时间:2013-08-20 16:29:05

标签: r euclidean-distance

我有大量数据框,由X和Y坐标对组成,并且希望计算后续坐标之间的欧几里德距离(最小尺寸约为2000对坐标) - 所以,从第1行到第2行的距离,第2行3,第3行到第4行,等等This question很好地展示了如何计算轨道数据的第一个和最后一个点之间的欧几里德距离,但我的数据更接近:

  

dff< -structure(列表(A = c(0L,0L,0L,0L,0L,0L),T = 0:5,X = c(668L,670L,672L,674L,676L,678L), Y = c(259L,259L,259L,259L,259L,260L),V = c(NA,0,0,0,0,0))。。Names = c(“A”,“T”,“X” “,”Y“,”V“),row.names = c(NA,6L),class =”data.frame“)

似乎应该有一种方法来创建一个循环来做到这一点,但我不确定如何下标这个。对于这种大小的数据集,使用dist()对计算要求很高,在任何情况下,我也不确定如何从对角线中提取一次性的矩阵元素。

2 个答案:

答案 0 :(得分:3)

这样的东西
sqrt(diff(dff$X)^2 + diff(dff$Y)^2)

应该有效。这里的关键是diff函数,它给出了向量中连续项之间的差异

答案 1 :(得分:1)

另一种方法,只是为了好玩:

sqrt(apply(apply(dff[,c("X","Y")], 2, diff)^2, 1, sum))