从矢量R grep NAs

Los*_*Lin 3 r

我如何使用grep()从矢量中获取NA?

即:当我尝试 grep(NA, c(1,NA))

我明白了 [1] NA NA

Rei*_*son 11

你想要is.na():

> vec <- c(1,NA)
> is.na(vec)
[1] FALSE  TRUE
Run Code Online (Sandbox Code Playgroud)

如果你想要的话NA,试试吧

> which(is.na(vec))
[1] 2
> vec[which(is.na(vec))]
[1] NA
> vec[is.na(vec)] # simpler, logical subscripting
[1] NA
Run Code Online (Sandbox Code Playgroud)

如果不这样做,则否定以下输出is.na():

> !is.na(vec)
[1]  TRUE FALSE
> which(!is.na(vec))
[1] 1
> vec[which(!is.na(vec))]
[1] 1
> vec[!is.na(vec)] ## simpler, logical subscripting
[1] 1
Run Code Online (Sandbox Code Playgroud)

你的代码不起作用的一个原因是你给出NA了模式.对于R这意味着未定义模式,因此向量的任一元素是否与此模式匹配也是未定义的 - 因此两者都NA在输出中.