r - 从具有重复的双精度向量中选择 k 个最高值
问题描述
假设我们有一个带有重复的浮点数向量 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
,这样的解决方案在 Stack 上进行了描述:
k <- 3
sort(as.numeric(names(table(x))), decreasing = T)[k]
但是,在这些解决方案中,需要从character
到进行转换number
,这会导致精度损失。任何人都有更好的解决方案的想法?
解决方案
sort(unique(x), T)[3]
[1] 0.2700705
推荐阅读
- ruby-on-rails - 如何在一个特定实例的应用程序控制器中覆盖rescue_from
- c++ - 如何使用 SFINAE 检测类型不完整的字段?
- laravel - 将 Laravel 本地化与 Vuejs 结合使用的最佳方法是什么
- asp.net - 如何运行在VS2017中使用Angular CLI开发的Angular应用程序?
- css - Wordpress 按类别名称应用配色方案
- c# - C#如何使用带有来自TextBox的百分比的while循环
- c# - 允许非管理员用户通过应用程序在 C# 中访问文件夹
- xamarin - PCLAppConfig System.IO.FileNotFoundException
- jenkins-job-dsl - 将 DSL 用于 Jenkins 作业时,Ansible AWX 步骤失败
- xml - XML 错误 文档末尾的额外内容