从排序到订单再回来

时间:2017-11-15 16:53:35

标签: r sorting vector

sortorder分别返回有序值和有序值索引的向量。

使用order来实现sort很简单:

v <- c(17, -5, 1, 20)

identical(v[order(v)], sort(v))
  

[1] TRUE

使用sort实施order的最简单方法是什么?

以下是我提出的建议:

identical(sapply(sort(v), function(x) grep(paste0("^", x, "$"), v)), order(v))
  

[1] TRUE

不漂亮。有更简单的方法吗?

1 个答案:

答案 0 :(得分:2)

返回sort函数中的索引:

sort(v, index.return=TRUE)
#$x
#[1] -5  1 17 20

#$ix
#[1] 2 3 1 4        # this is the order to sort the vector
identical(sort(v, index.return=TRUE)$ix, order(v))
# [1] TRUE