我有一个列表列表,其中一些是 NA
,例如empty lists
。我想提取所有填充数据的列表并删除所有 empty(NA)
列表。
我正在尝试的代码是:
lapply(outputfile,function(x){
if(outputfile != NA){
test<-lapply(outputfile,unlist)
}})
但这不起作用。
列表的列表是这样的:(随机数据的小例子)
list(NA, NA, NA, NA, NA, NA, list(c(5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5)))
我只想提取包含 5s 的列表。应忽略前 6 个列表,例如移除。
任何帮助表示赞赏
最佳答案
因此,要在第一级删除 NA
,您可以直接使用 is.na
:
l[!is.na(l)]
或者,您也可以使用
Filter
,它会尝试将评估函数的结果强制为逻辑值,并返回那些评估为 TRUE 的元素。你可以这样做,例如:Filter(function(x) !is.na(x), l)
(或)等效地(如@flodel 在评论下所写)
Filter(Negate(is.na), l)
关于从列表列表中删除空列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15292904/