繁体   English   中英

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

[英]R: How to return the smallest distances between cities?

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

        [,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

有人可以帮我吗?

你是对的使用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
library(reshape2)
pairwisecities <- melt(apply(mdat,1,order))

将为您提供成对排名,然后您可以在pairwisecities中将value <= 3subset

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM