R 在列表的列中查找特定值
我试图获取列表中的哪些对象在其列中具有特定值 为了解释我的案例,请运行以下简单示例: mtcars被分成一个列表 如果我们查看其中一个元素,就会看到“齿轮”列 我想知道哪些元素在“齿轮”列中的值为“4”。因此,它将搜索列表中的所有元素,在“gear”列中,如果发现值为5,则列出该元素 所需输出应为=“4”6”,您可以在列齿轮中找到值“4”。(不在要素“8”中) 任何帮助都将不胜感激R 在列表的列中查找特定值,r,dataframe,R,Dataframe,我试图获取列表中的哪些对象在其列中具有特定值 为了解释我的案例,请运行以下简单示例: mtcars被分成一个列表 如果我们查看其中一个元素,就会看到“齿轮”列 我想知道哪些元素在“齿轮”列中的值为“4”。因此,它将搜索列表中的所有元素,在“gear”列中,如果发现值为5,则列出该元素 所需输出应为=“4”6”,您可以在列齿轮中找到值“4”。(不在要素“8”中) 任何帮助都将不胜感激 谢谢。我们可以循环查看列表,检查“齿轮”列中是否有任何等于4的元素,使用该元素将列表的名称子集 names(mt_
谢谢。我们可以循环查看
列表
,检查“齿轮”列中是否有任何等于4的元素,使用该元素将列表的名称
子集
names(mt_list)[sapply(mt_list, function(x) any(x$gear == 4))]
#[1] "4" "6"
或者使用%
中的%创建逻辑索引
names(mt_list)[sapply(mt_list, function(x) 4 %in% x$gear)]
#[1] "4" "6"
工作得很好。最后一个问题,如果名称不是“Gear”列而是“Car1.Gear”、“Car2.Gear”、“Car3.Gear”等,那么他们共享“.Gear”谢谢。@在这种情况下,Albert将x$Gear
(匿名函数调用或lamba函数)更改为x[[grep(^Car\\d+\\.Gear$”,names(x))]
names(mt_list)[sapply(mt_list, function(x) any(x$gear == 4))]
#[1] "4" "6"
names(mt_list)[sapply(mt_list, function(x) 4 %in% x$gear)]
#[1] "4" "6"