2017-10-12 62 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