列表中的空位索引

时间:2017-12-22 12:24:20

标签: r list

我有一个如下列表:

l <- list(c(1,2,3), integer(), c(4,5), integer(), 7)

作为回报我想要一个如下的矢量:

c(2, 4)

列表l没有元素的位置。我可以通过以下方式解决这个问题:

which(unlist(lapply(c(1:(length(l))), function(x) { length(l[[x]]) })) == 0)

甚至是:

as.vector(which(unlist(lapply(l, length)) == 0))

但我觉得我有点复杂。有没有使用这么多函数的简单方法来获取此列表中空位置的索引?

1 个答案:

答案 0 :(得分:3)

您应该使用lengths函数,该函数给出列表中所有元素的长度:

which(lengths(l)==0)
#[1] 2 4

lengths功能有点&#34;新&#34; (如果我没记错的话,从R 3.2.0起可用)。如果您有较旧的R版本,这也有效(但速度较慢):

which(sapply(l,length)==0)