有条件地删除列表的NULL元素

时间:2018-03-05 01:17:33

标签: r list

假设我在R中有一个列表:

a <- c(1,2,3)
f <- NULL
b <- c("a","b","c")
d <- list(a,f,b)

产生

> d
[[1]]
[1] 1 2 3

[[2]]
NULL

[[3]]
[1] "a" "b" "c"

我知道构建这样的列表听起来很愚蠢,但是我从之前的计算中得到了这个(我可以将f设置为0或任何其他字符)。我试图删除f,因为我需要算法在有效列a和b中执行操作,但到目前为止还没有成功。 d [2]仍在那里......

那么如何从列表中删除d [2]?它应该从length = 3到length = 2,并且在实际的实例中我不知道列表中哪些元素是NULL,所以基于if的响应会很棒......

干杯,

1 个答案:

答案 0 :(得分:1)

使用R中的is.null函数来识别哪些元素为NULL。这将有效:

d[-which(lapply(d,is.null) == T)]