从列表中删除空(NA)元素

时间:2014-07-07 17:40:29

标签: r

如何删除满足以下情况的列表中的所有元素?

miRNA_annotation$EGOT[1]
[1] NA

miRNA_annotation$ELTD1[1]
[1] NA

非常感谢你

最佳

dput(miRNA_annotation)
structure(list(AATF = NA_character_, NKIRAS2 = <S4 object of class structure("targetscanTarget", package = "targetscan.Hs.eg.db")>, 
    DDX52 = <S4 object of class structure("targetscanTarget", package = "targetscan.Hs.eg.db")>,.....,) Names = c("AATF",...., "ELTD1", "EGOT"))

3 个答案:

答案 0 :(得分:3)

或者使用@ MrFlick的例子

 Filter(Negate(is.na), x)

如果要包括至少一个非NA

 Filter(Negate(function(y) all(is.na(y)) ), x)

答案 1 :(得分:2)

我会假设你的意思是这样的

x<-list(a=1, b=2, c=NA, d=3, e=NA)
x[sapply(x, function(z) !all(is.na(z)))]

# $a
# [1] 1
# 
# $b
# [1] 2
# 
# $d
# [1] 3

在这里,我们使用sapply过滤列表,只包含至少有一个非NA值的元素。

答案 2 :(得分:0)

还可以使用:

EGOTNA<-which(is.na(miRNA_annotation$EGOT))
miRNA_annotation <- miRNA_annotation[-EGOTNA,]