我有一个包含多个成员的列表(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)
在这种情况下,我希望看到bb
和cc
被退回。谢谢!
答案 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]