R 正确地按向量对矩阵排序

R 正确地按向量对矩阵排序,r,matrix,vector,R,Matrix,Vector,我不明白为什么我不能使用排序函数对基于向量的矩阵进行排序 我有以下资料: 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,]

我不明白为什么我不能使用排序函数对基于向量的矩阵进行排序

我有以下资料:

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的时候

你们认为为什么会发生这种情况?我该如何解决它?

而不是

m[order(unlist(v)),]
试一试


m[unlist(v),]
?谢谢,但我的问题是,在这种情况下为什么不能使用order?@user3141121查看
unlist(v)[order(unlist(v))]
。它对向量进行排序,但order返回索引的排列,这些排列的结果是排序的顺序。正如Simon所指出的,如果您想显式地给出索引,那么不要使用
order()
。好吧,请阅读帮助页面:
?order
,然后尝试
order(unlist(v))
unlist(v)[order(unlist(v))]
,看看您是否能解决这个问题。
m[order(unlist(v)),]
temp <- unlist(v)
m[ temp , ]
> x = c(3,1,2)
> order(x)
[1] 2 3 1
> x[order(x)]
[1] 1 2 3