【发布时间】:2014-12-22 00:12:34
【问题描述】:
我不明白为什么我不能使用 order 函数对基于向量的矩阵进行排序
我有以下几点:
m
[,1] [,2]
[1,] 1 5
[2,] 2 5
[3,] 3 5
[4,] 4 5
[5,] 5 5
[6,] 6 5
v
[[1]]
[1] 3 1 2 4 5 6
当我使用时:
m[order(unlist(v)),]
我得到以下排序错误的矩阵。
[,1] [,2]
[1,] 2 5
[2,] 3 5
[3,] 1 5
[4,] 4 5
[5,] 5 5
[6,] 6 5
当我想要的顺序是 v
[,1] [,2]
[1,] 3 5
[2,] 1 5
[3,] 2 5
[4,] 4 5
[5,] 5 5
[6,] 6 5
你们认为为什么会发生这种情况,我该如何解决?
【问题讨论】:
-
嗯....
m[unlist(v),]? -
谢谢,但我的问题是为什么你不能在这种情况下使用 order?
-
@user3141121 看看
unlist(v)[order(unlist(v))]。它对向量进行排序,但 order 返回导致排序顺序的索引的排列。正如西蒙指出的那样,如果你想明确给出索引,那么不要使用order()。 -
好吧,阅读帮助页面:
?order,然后试试order(unlist(v))和unlist(v)[ order(unlist(v))],看看你能不能解决这个问题。