2017-10-12 66 views
0

很高興收到您的幫助。在R中訂購較低的矩陣

我有一個較低的三角形矩陣,但我想編輯行的順序,根據我自己的名稱列表(也許是一個向量?)。

INPUT

A C D B 
A 0 NA NA NA 
C 13 0 NA NA 
D 14 17 0 NA 
B 12 15 16 0 

輸出

A B C D 
A 0 NA NA NA 
B 12 0 NA NA 
C 13 15 0 NA 
D 14 16 17 0 

我要調出的行的順序應該是由我提供的清單,而不是任何升序或降序排列。

謝謝你的時間!

回答

1

我們可以使用lower.tri得到一個邏輯矩陣,其中下半部分的元素爲TRUE,其他的FALSE爲數據集的子集('v1')。使用此orderv1[order(v1)])並將其分配到數據

v1 <- df1[lower.tri(df1)] 
df1[lower.tri(df1)] <- v1[order(v1)] 
+0

喜@ankur的下三角,感謝您的答覆。你能解釋一下嗎?尤其是哪一部分我可以在腳本中引入名稱列表(我想要顯示矩陣的順序)? – gusa10

+0

@ gusa10我增加了更多的解釋 – akrun

+0

,但不是通過acsending或降序的順序?正如我在文章中提到的那樣,我希望在訂單上保持靈活性。我的矩陣有很多行,我想根據我的預定義列表訂購 – gusa10