[英]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
有人可以帮我吗?
你是对的使用apply
与order
。 命令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 <= 3
为subset
apply(mdat,1,rank)
会给你排名。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.