Вы хотите is.na()
:
> vec <- c(1,NA)
> is.na(vec)
[1] FALSE TRUE
Если вы хотите NA
, попробуйте
> which(is.na(vec))
[1] 2
> vec[which(is.na(vec))]
[1] NA
> vec[is.na(vec)] # simpler, logical subscripting
[1] NA
Если вы этого не сделаете, отрицайте вывод от 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
Одна из причин, по которой ваш код не работает, это то, что вы дали NA
в качестве шаблона. Для R это означает, что шаблон не определен, поэтому совпадение любого из элементов вектора с этим шаблоном также не определено - следовательно, оба являются NA
в выходных данных.