我有一个整数向量,让我们说从1到3(可以更多):
x <- sample(1:3, 10, replace=T)
[1] 1 3 1 2 2 1 3 2 3 2
如果我排序x
我会得到
sort(x)
[1] 1 1 1 2 2 2 2 3 3 3
但我先需要2s,然后是1s,然后是3s。
[1] 2 2 2 2 1 1 1 3 3 3
那么,如果我有一个向量y = c(2, 1, 3)
,我如何使用它来排序顺序?
实际上我不需要值本身,而是原始向量中的排序值索引,就像我从order
函数得到的那样。
答案 0 :(得分:8)
有点复杂的选择:
x[order(factor(x,levels = c(2,1,3)))]
或者很明显,只需要order
调用索引。
答案 1 :(得分:7)
简单重新映射值有效:
x <- sample(1:3, 10, replace=T)
x
[1] 2 3 1 1 3 2 2 3 3 2
order(c(2,1,3)[x])
[1] 1 6 7 10 3 4 2 5 8 9