确定嵌套列表是否在R中具有所有NA值时,sapply出现问题

jps*_*ith 5 r

我有一个嵌套列表(或列表列表),其中包含NA随机分配的值。我试图确定嵌套列表是否包含所有NA值。例如:

#Example list with NA values
L.miss<-list(list(NA,NA,c(NA,NA,NA),c(NA,NA)),list(1,6,c(0,3,NA,0,NA,0),c(0,NA,0,1,0,0),1,NA,c(0,1),2,c(0,0)),
             list(NA,NA),list(1,0),list(1,NA,c(NA,0,0,0),c(NA,NA),c(1,0,0,NA,0),0))
Run Code Online (Sandbox Code Playgroud)

在这里,L.miss[[1]]L.miss[[3]]包含所有NA值。当我尝试:

all.NA<-sapply(L.miss, function(x) all(is.na(x)))
Run Code Online (Sandbox Code Playgroud)

它返回一个逻辑向量[1] FALSE FALSE TRUE FALSE FALSE。期望的输出将是[1] TRUE FALSE TRUE FALSE FALSE因为position L.miss[[1]]L.miss[[3]]包含all的向量NA。我已经尝试过lapplyrapply具有相同的功能,但无法正常工作,并且详尽的Internet搜索无法提供太多帮助。我不确定为什么要接这个[[3]]职位而不是这个[[1]]职位。任何意见,将不胜感激!

Smo*_*ers 5

取消列出嵌套列表,然后测试:

all.NA<-sapply(L.miss, function(x) all(is.na(unlist(x))))
Run Code Online (Sandbox Code Playgroud)