[英]find 3 shortest distances in a matrix
我有一个站点的对角线距离矩阵,如下所示
head(distancematrix)
15001 15002 15003 15004 15005 15008
15001 0.0000 252.9474 390.4716 858.7412 1082.2168 1262.6803
15002 252.9474 0.0000 164.8057 608.5672 834.7632 1033.4702
15003 390.4716 164.8057 0.0000 477.9417 755.8448 990.6740
15004 858.7412 608.5672 477.9417 0.0000 370.3795 668.1066
15005 1082.2168 834.7632 755.8448 370.3795 0.0000 303.5589
15008 1262.6803 1033.4702 990.6740 668.1066 303.5589 0.0000
我希望能够获得连续每个站点的数据框以及 3 个最短站点的距离。
site s1 s2 s3
15001 252.9474 390.4716 858.7412
15002 164.8057 608.5672 834.7632
您可以尝试使用应用程序。 在这种情况下,我们对每一行进行排序,并取第二到第四个值 - 最低的是您已排除的 0。 第 2 行的输出与您的示例不匹配,因为您错过了 252.9474 点:
t(apply(dat, 1, function(x){sort(x)[2:4]}))
[,1] [,2] [,3]
15001 252.9474 390.4716 858.7412
15002 164.8057 252.9474 608.5672
15003 164.8057 390.4716 477.9417
15004 370.3795 477.9417 608.5672
15005 303.5589 370.3795 755.8448
15008 303.5589 668.1066 990.6740
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.