sort
和order
分别返回有序值和有序值索引的向量。
使用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
不漂亮。有更简单的方法吗?
答案 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