从具有重复的双打向量中选择k个最高值

时间:2018-08-23 13:32:55

标签: r

假设我们有一个带有重复的浮点数的向量x

set.seed(999) 
x <- unlist(sapply(1:5, function(.) rep(rnorm(1), rpois(1, 4)))) 
x
# -0.281740158905298 -0.281740158905298 1.04778530174241 1.04778530174241 0.270070494348895 0.270070494348895 0.270070494348895 0.304095399122096 0.304095399122096 0.304095399122096 0.304095399122096 -1.87865825782054 -1.87865825782054

最简单的方法是在向量​​中忽略重复,找到第k个最大值?

对于示例向量xk=3的结果为0.270070494348895

一种想法是使用table,并且在堆栈上对此解决方案进行了描述:

k <- 3
sort(as.numeric(names(table(x))), decreasing = T)[k]

但是,在这些解决方案中,必须进行从characternumber的转换,这会导致精度损失。任何人都有更好的解决方案的主意吗?

1 个答案:

答案 0 :(得分:2)

sort(unique(x), T)[3]
[1] 0.2700705