有条件地删除列表中的NULL元素[重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

假设我在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的响应会很棒......

干杯,

r list
1个回答
1
投票

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

d[-which(lapply(d,is.null) == T)]
© www.soinside.com 2019 - 2024. All rights reserved.