我有一个整数向量,让我们说从1到3(可以更多):
x <- sample(1:3, 10, replace=T)
[1] 1 3 1 2 2 1 3 2 3 2
Run Code Online (Sandbox Code Playgroud)
如果我排序x我会得到
sort(x)
[1] 1 1 1 2 2 2 2 3 3 3
Run Code Online (Sandbox Code Playgroud)
但我首先需要2s,然后是1s,然后是3s.
[1] 2 2 2 2 1 1 1 3 3 3
Run Code Online (Sandbox Code Playgroud)
那么,如果我有一个向量y = c(2, 1, 3),我如何使用它来排序顺序?
实际上我不需要值本身,而是原始向量中的排序值索引,就像我从order函数中得到的那样.
一个有点复杂的选择:
x[order(factor(x,levels = c(2,1,3)))]
Run Code Online (Sandbox Code Playgroud)
或者显然,order只是对指数的要求.
简单地重新映射值有效:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3201 次 |
| 最近记录: |