I have a vector and I'm able to return highest and lowest value, but how to return 5 topmost values? Is there a simple one-line solution for this?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
> a <- c(1:100)
> tail(sort(a),5)
[1] 96 97 98 99 100
回答2:
x[order(x)[1:5]]
回答3:
Yes, head( X, 5)
where X
is your sorted vector.
回答4:
tail(sort.int(x, partial=length(x) - 4), 5)
Using sort.int with partial has the advantage of being (potentially) faster by (potentially) not doing a full sort. But in reality, my implementation appears a little slower. Maybe this is because with parameter partial != NULL, shell sort is used rather than quick sort?
> 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