【发布时间】:2019-01-08 03:34:22
【问题描述】:
这是我在矩阵中的数据。它是经纬的。我想要点1和2、2和3、3和4等之间的距离。
> mat<-as.matrix(b)
> mat
buoy.LON buoy.LAT
[1,] -86.34816 43.19014
[2,] -86.34337 43.18656
[3,] -86.34013 43.18268
[4,] -86.33468 43.17484
[5,] -86.33091 43.16549
[6,] -86.32912 43.15925
[7,] -86.32786 43.14887
dis<-distGeo(mat[2,],mat[3,]) #distance in meters
did
[1] 505.1605
上述公式效果很好,但我想创建一个循环来快速完成此操作,并且我希望将数据添加到矩阵中。
我创建了这个循环
for (i in mat[1:169,]) {
distGeo(mat[i,], mat[i+1,])
}
但我总是得到回报
196
如何使 for 循环正常工作,以及如何将答案添加到矩阵中?
【问题讨论】:
-
我对该链接问题的回答使用
distHaversine,但我认为您使用geosphere::distGeo是更好的(椭圆体)计算。 (我可能应该更新那个答案......) -
我很难遵循这个例子,当我使用它时,n 项会产生问题。我应该定义 n n
-
答案不使用
n变量,它使用dplyr::n()函数......你指的是什么? (不要使用问题本身的任何代码。)
标签: r for-loop matrix geospatial euclidean-distance