如何在R中找到哪个列表的n个值大于x?

时间:2015-03-04 00:14:21

标签: r list

我有一个包含多个成员的列表(list1)。列表中的每个成员都包含各种数字。我想找到至少有3个值大于或等于5的列表成员。我该如何做到这一点?

aa <- c(1,2,3,4,5)
bb <- c(5,6,9,7,8)
cc <- c(3,8,5,1,6)

list1 <- list(aa,bb,cc)

在这种情况下,我希望看到bbcc被退回。谢谢!

2 个答案:

答案 0 :(得分:4)

您可以使用Filter返回过滤后的对象

Filter(function(x) sum(x>=5)>=3,list1)

或者如果你想要一个“hadley”解决方案

devtools::install_github("hadley/purrr")
list1 %>% keep(function(x) sum(x>=5)>=3)

答案 1 :(得分:1)

如果您只想要满足条件的元素的索引,请使用:

which(sapply(list1,function(x)sum(x>=5))>=3)

如果您想要符合条件的列表元素的名称,请使用:

names(list1)[sapply(list1,function(x)sum(x>=5))>=3]