2015-10-23 86 views
2

我按下面的網站的對角距離矩陣找到一個矩陣3米最短距離

 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 

回答

1

你可以嘗試使用apply。在這種情況下,我們正在對每一行進行排序,並將第二到第四個值排序 - 最低排除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 
+0

完美謝謝您的優雅解決方案 – Sasukethorpido