如何从R中的向量返回5个最高值?

时间:2010-09-11 20:33:23

标签: r vector topmost

我有一个向量,我能够返回最高和最低值,但如何返回5个最高值?对此有简单的单行解决方案吗?

4 个答案:

答案 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