РЕДАКТИРОВАТЬ (другой вариант)
purrr::discard(l,function(x) isTRUE(anyNA(x)))
$b
[1] TRUE
$c
[1] FALSE FALSE
Вы можете идентифицировать все NA
элементов и zap
их:
purrr::list_modify(l,a=purrr::zap())
$b
[1] TRUE
$c
[1] FALSE FALSE
РЕДАКТИРОВАТЬ2
Если вы хотите удалить все вложенные NA
с, вы можете написать помощника zap_if()
:
zap_if <- function(x){
unlist(lapply(x, function(z) z[!is.na(z)]))
}
purrr::map(l,zap_if)
Результат:
$a
[1] 1
$b
[1] TRUE
$c
[1] FALSE FALSE
Данные для zap_if
детали:
l <- list(a = c(NA,1), b = T, c = c(F, F))