R:如何返回城市之间的最小距离?

时间:2013-12-07 01:52:53

标签: r

我有一个大矩阵,其中一部分看起来像这样:

        [,1]   [,2]   [,3]   [,4]    [,5]
[1,]      0      3     10      7       6
[2,]      3      0      9      4      11
[3,]     10      9      0      8      15
[4,]      7      4      8      0      16
[5,]      6     11     15     16       0

每个列/行代表一个城市,相应的数字告诉您它们之间的距离。

我想找到最接近每个城市的三个城市。

我写了

apply(Matrix,1,order)

查找订单,但不确定如何从中提取最近的城市。

因此,对于每个城市,比如称为1,2,3,4,5,我希望它返回

[1] 1, 2, 5
[2] 1, 2, 4
[3] 2, 3, 4
[4] 1, 2, 4
[5] 1, 2, 5

有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:0)

applyorder一起使用是正确的。命令apply(mat, 1, order)按列返回结果。您可以使用[seq(3), ]提取前三个值。函数t转置结果矩阵。

t(apply(mat, 1, order)[seq(3), ])

     [,1] [,2] [,3]
[1,]    1    2    5
[2,]    2    1    4
[3,]    3    4    2
[4,]    4    2    1
[5,]    5    1    2

答案 1 :(得分:0)

library(reshape2)
pairwisecities <- melt(apply(mdat,1,order))

会为您提供成对排名,然后subset pairwisecities value <= 3

apply(mdat,1,rank)会给你排名。