【发布时间】:2016-03-22 15:07:06
【问题描述】:
假设我有一个 1802 x 2 坐标矩阵(经度/纬度)coord 每行因此代表空间中的一个点。
[,1] [,2]
[1,] -90.0 -5
[2,] -87.5 -5
[3,] -85.0 -5
[4,] -82.5 -5
[5,] -80.0 -5
[6,] -77.5 -5
我使用 geosphere 包 distGeo 函数计算两点 p1 和 p2 之间的测地距离,即
distGeo(coord[1,],coord[2,])
我想为coord 中每个点之间的距离构建一个对称度量矩阵(因此为 1802*2,1802*2)
尝试循环为
for (i in 1:nrow(coord)){
for (j in 1:nrow(coord)){
distGeo(coord[i,],coord[j,])
}
}
需要永远(即使使用 doMPI 和分块),据我所知 outer 只能使用长度为 1 的参数。
有什么想法吗?
【问题讨论】:
-
您可能需要
?combn,即combn(seq_len(nrow(coord)), 2, FUN= function(x) distGeo(coord[x[1],], coord[x[2],])) -
谢谢。但它不会将一个元素与其自身进行比较(即距离为零,矩阵的对角线),并且它似乎没有以两种方式使用组合(即 1-2 和 2-1)。有办法处理吗?
-
在这种情况下使用
expand.grid或outer -
正如我所说,外部似乎不接受长度 2(经度和纬度)作为参数。
-
我猜你可以在
list中使用它,(未测试)
标签: r matrix combinations