2014-07-07 105 views
-2

如何刪除滿足以下情況的列表中的所有元素?刪除列表中的空(NA)元素

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")) 

回答

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值的元素。

3

或使用@ MrFlick的例子

Filter(Negate(is.na), x) 

如果是至少包括一個非NA

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

還可以使用:

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