r - 在R中的列表中查找最接近的值
问题描述
我有一个与值关联的标签列表。对于值 x,我想找到与列表中最接近(但次要)值相对应的标签。
我找到了一种方法,但它看起来很混乱和复杂......
mylist <- list("A"=0.02,
"B"=0.13,
"C"=0.26)
x = 0.14 # B
df <- as.data.frame(t(as.data.frame(mylist)))
df <- tibble::rownames_to_column(df, "labels")
df$V2 <- x > df$V1
maxi <- max(df[df$V2 == TRUE,]$V1)
label <- df[df$V1 == maxi,]$labels
还有另一种简洁的方法吗?
解决方案
x
我们用 的每个值减去 的值mylist
,过滤掉差值大于 0 的值,并选择names
最小差值的 。
new <- x - unlist(mylist)
names(which.min(new[new > 0]))
#[1] "B"
或者单线,我们只过滤那些小于的值x
并从中选择max
。
names(which.max(sapply(mylist, function(i) i[(x - i) > 0])))
#[1] "B"
推荐阅读
- python - 如何检查索引 0 是否与列表中的索引 1 匹配?例如,检查用户名是否与给定的密码匹配,希望这是有意义的
- python - System.Private.CoreLib:在 Azure 函数中本地加载保存的 TensorFlow 模型时,python3 以代码 139 退出
- node.js - 如何从 Spotify Search API 获取数据并将其解析为 JSON?[在 node.js 中
- eclipse - 将 PyDev 安装到 Eclipse 时出现问题
- python - 如何检查数据帧字符串字段的python字节?
- flutter - 颤动中的动态下拉菜单,带有静态“添加新”按钮类型,如图所示
- java - 当多个类继承单个抽象类时使用构建器模式
- c++ - 如何将参数传递给从 C++ 调用的蓝图函数?
- python - 将 numpy 数组保存在 .txt 文件中
- tensorflow - 如何使 Tensorflow vid2depth 推理工作?