我有一个向量,我可以返回最高值和最低值,但是如何返回 5 个最高值?有没有一个简单的单线解决方案?
问问题
98331 次
4 回答
71
> a <- c(1:100)
> tail(sort(a),5)
[1] 96 97 98 99 100
于 2010-09-11T21:23:43.160 回答
22
x[order(x)[1:5]]
于 2010-09-11T23:07:39.983 回答
4
是的,您的排序向量head( X, 5)
在哪里。X
于 2010-09-11T20:44:00.750 回答
3
tail(sort.int(x, partial=length(x) - 4), 5)
将 sort.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
于 2010-09-12T08:07:32.397 回答