我有一个向量,我能够返回最高和最低值,但如何返回5个最高值?对此有简单的单行解决方案吗?
答案 0 :(得分:48)
> a <- c(1:100)
> tail(sort(a),5)
[1] 96 97 98 99 100
答案 1 :(得分:19)
x[order(x)[1:5]]
答案 2 :(得分:3)
是的,head( X, 5)
其中X
是您的排序向量。
答案 3 :(得分:3)
tail(sort.int(x, partial=length(x) - 4), 5)
将partial.int与partial一起使用的优点是(可能)更快(可能)不进行完整排序。但实际上,我的实现看起来有点慢。也许这是因为参数partial!= NULL,使用shell排序而不是快速排序?
> x <- 1:1e6
> system.time(replicate(100, tail(sort.int(x, partial=length(x) - 4), 5)))
user system elapsed
4.782 0.846 5.668
> system.time(replicate(100, tail(sort(x), 5)))
user system elapsed
3.643 0.879 4.854