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