我试图获取列表的哪些对象在其列之一中具有特定值。
为了解释我的情况,请运行以下简单示例:
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”。因此它将搜索列表的所有元素,在“齿轮”列内,如果发现值为5,则列出该元素。
所需的输出应为=“ 4”“ 6”,在此您可以在圆柱齿轮中找到值“ 4”。 (在元素“ 8”中不存在)
任何帮助将不胜感激。
谢谢。
答案 0 :(得分:5)
我们可以遍历list
,检查'gear'列中是否有any
元素等于4,使用它来对{{1 }}
names
或使用list
创建逻辑索引
names(mt_list)[sapply(mt_list, function(x) any(x$gear == 4))]
#[1] "4" "6"