我有一个列表,其中可能包含NA值。
如何删除完全由NA值填充的列表,同时注意如果列表中有非NA值,则这些值和NA值都不应该被删除?
以下是输入示例:
myList <- list()
myList[[1]] <- c(1,2,3)
myList[[2]] <- c(4,5)
myList[[3]] <- c(NA,NA,NA,NA,NA)
myList[[4]] <- c(NA, 6, 7, NA)
myList[[5]] <- NA
期望的输出是:
[[1]]
[1] 1 2 3
[[2]]
[1] 4 5
[[3]]
[1] NA 6 7 NA
到目前为止,我已经能够完成以下事项:
test <- lapply(myList, function(x) x[!all(is.na(x))])
并且得到以下输出:
[[1]]
[1] 1 2 3
[[2]]
[1] 4 5
[[3]]
logical(0)
[[4]]
[1] NA 6 7 NA
[[5]]
logical(0)
myList[!sapply(myList, function(x) all(is.na(x)))]
- kangaroo_cliff