r - 在列表的列中查找特定值

标签 r dataframe

我正在尝试获取列表中的哪些对象在其中一列中具有特定值。

为了解释我的情况,请运行以下简单示例:

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,检查 'gear' 列中是否有 any 元素等于 4,使用它来对 names 进行子集化列表

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"

关于r - 在列表的列中查找特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52596632/

相关文章:

python - Pandas 新列作为另一列的字符串提取,仅在验证字符串长度的特定条件下 : Fast way

python - Pandas :对多列求和,但如果该行中的任何列为 NaN 或 0,则写入 NaN

python - 如何在 ‘\n’ 上拆分一行并将拆分后的所有内容添加到新行?

R LDAvis K=2 createJSON() 错误

R - 运行管道运算符(operator)的 t 检验

r - k-均值聚类与新的训练数据?

r - 是否可以在数据框中使用在该数据框中定义的变量调用 eval?

python - 用 pandas 进行行之间的减法

c - 为什么相同的函数在链接其他目标文件后表现不同?

r - 如何按组应用data.table中的函数然后在新列中输出结果?