r - 在列表的列中查找特定值
问题描述
我正在尝试获取列表的哪些对象在其列之一中具有特定值。
为了解释我的情况,请运行以下简单示例:
mtcars 拆分成一个列表
mt_list = split(mtcars, f = mtcars$cyl)
如果我们查看其中一个元素,我们会看到“齿轮”列
head(mt_list$`4`)
mpg cyl disp hp drat wt qsec vs am gear carb
Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1
Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2
Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1
我想知道哪些元素在“齿轮”列中的值为“4”。因此它将搜索列表的所有元素,在“gear”列内,如果找到值 5,则列出该元素。
所需的输出应该是 = "4" "6" ,您可以在列齿轮中找到值 "4"。(不存在于元素“8”中)
任何帮助将不胜感激。
谢谢。
解决方案
我们可以遍历list
,检查any
'gear' 列中是否有等于 4 的元素,用它来子names
集list
names(mt_list)[sapply(mt_list, function(x) any(x$gear == 4))]
#[1] "4" "6"
或者%in%
用来创建逻辑索引
names(mt_list)[sapply(mt_list, function(x) 4 %in% x$gear)]
#[1] "4" "6"
推荐阅读
- postgresql - postgres,从 jsonb 列生成的列,过滤
- laravel - Vue.js 与 Laravel Blade 组件冲突
- javascript - 为什么我的两个复选框值不起作用?
- android - Android Firebase 动态链接,一种通过深度链接模拟 Play 商店安装的方法
- r - 将数据框从长调整为宽,但每行的列数不同
- c# - 如何使用 EF Core 和 Include 检查实体内相关列表的长度?
- r - 对 R 中的多个数据集重复分析
- keycloak - 更改 Keycloak 注销重定向 url
- node.js - 如何使用用户 ID 查找喜欢的帖子
- c# - .Net 5 中的 ManualResetEvent