如何检查列表是否包含`NA`?

jar*_*auh 4 r na

当右手边是向量时,%in%可用于检查NAs:

> NA %in% c(NA, 2)
[1] TRUE
> NA %in% c(1, 2)
[1] FALSE
> 1 %in% c(NA, 2)
[1] FALSE
> 1 %in% c(1, 2)
[1] TRUE
Run Code Online (Sandbox Code Playgroud)

当右侧是列表时,%in%行为不同:

> NA %in% list(NA, 2)
[1] FALSE
> NA %in% list(1, 2)
[1] FALSE
> 1 %in% list(NA, 2)
[1] FALSE
> 1 %in% list(1, 2)
[1] TRUE
Run Code Online (Sandbox Code Playgroud)

这是错误还是功能?这是在文档中描述的吗?

akr*_*run 5

我们可以用 anyNA

anyNA(list(NA, 2))
Run Code Online (Sandbox Code Playgroud)

如果list具有vector长度> 1的S,然后使用recursive = TRUE

anyNA(list(c(1, 2), c(NA, 1)), recursive = TRUE)
#[1] TRUE
Run Code Online (Sandbox Code Playgroud)