计算相邻位置之间的欧几里得距离

3
我有包含X和Y坐标对的大型数据框,希望计算连续坐标之间的欧氏距离(最小大小约为2000对坐标)。
因此,我想要计算从第1行到第2行,从第2行到第3行,从第3行到第4行等的距离。 这个问题很好地展示了如何计算轨迹数据的第一个点和最后一个点之间的欧几里得距离,但我的数据更接近于:
dff <- structure(list(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()是计算量很大的,而且我也不确定如何提取与对角线差为1的矩阵元素。


你看过 sp 包吗? - Frank
2个回答

7

类似以下内容:

sqrt(diff(dff$X)^2 + diff(dff$Y)^2)

应该可以工作。关键在于diff函数,它可以给出向量中相邻项目之间的差异。


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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接