假设我们有一个带有重复的浮点数的向量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个最大值?
对于示例向量x
,k=3
的结果为0.270070494348895
。
一种想法是使用table
,并且在堆栈上对此解决方案进行了描述:
k <- 3
sort(as.numeric(names(table(x))), decreasing = T)[k]
但是,在这些解决方案中,必须进行从character
到number
的转换,这会导致精度损失。任何人都有更好的解决方案的主意吗?
答案 0 :(得分:2)
sort(unique(x), T)[3]
[1] 0.2700705