首页 > 解决方案 > 确定嵌套列表是否在 R 中具有所有 NA 值时出现 sapply 问题

问题描述

我有一个嵌套列表(或列表列表),其中包含 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))

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

all.NA<-sapply(L.miss, function(x) all(is.na(x)))

它返回一个逻辑向量[1] FALSE FALSE TRUE FALSE FALSE。所需的输出将是[1] TRUE FALSE TRUE FALSE FALSE因为位置L.miss[[1]]L.miss[[3]]包含所有的向量NA。我已经尝试过lapply相同rapply的功能但不起作用,并且详尽的互联网搜索并没有提供太多帮助。我不知道为什么它会获得[[3]]职位而不是[[1]]职位。任何意见,将不胜感激!

标签: r

解决方案


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

all.NA<-sapply(L.miss, function(x) all(is.na(unlist(x))))

推荐阅读