【问题标题】:Sort vector of integers in specific (custom) order按特定(自定义)顺序对整数向量进行排序
【发布时间】:2013-07-19 01:57:06
【问题描述】:

我有一个整数向量,比如说从 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 函数中得到的那样。

【问题讨论】:

  • 数字总是从1到N吗?

标签: r sorting vector


【解决方案1】:

一个有点复杂的选项:

x[order(factor(x,levels = c(2,1,3)))]

或者很明显,只是 order 只调用索引。

【讨论】:

  • 谢谢!效果很好。我认为as.integer 没有必要打电话。对吗?
【解决方案2】:

对值进行简单的重新映射即可:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-01
    • 1970-01-01
    • 2016-11-01
    相关资源
    最近更新 更多