簡體   English   中英

在矩陣中找到 3 個最短距離

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM