子集列表基于TRUE / FALSE

时间:2015-08-21 17:09:13

标签: r

说我有一个清单

> foo

[[1]]
[1] TRUE

[[2]]
[1] TRUE

[[3]]
[1] FALSE

[[4]]
[1] TRUE

如何找到哪些值返回TRUE,以便得到类似

的列表
[1] 1 2 4

谢谢!

2 个答案:

答案 0 :(得分:4)

您需要做的就是取消列表并询问哪些是正确的。

which(unlist(foo))

> foo <- list(TRUE, TRUE, FALSE, TRUE)
> which(unlist(foo))
[1] 1 2 4

@Per评论:

如果您不确定所有元素属于同一类型,您还可以执行以下操作: 哪个(foo == TRUE)

就个人而言,我更倾向于隐含地抛出错误,在我看来,如果我对所有元素进行查询,我认为每个元素都是可比较的。但是,这种担忧是有效的。

答案 1 :(得分:2)

正如我之前的评论,这是一个(更强大的)解决方案:

which(foo == TRUE)
[1] 1 2 4