R Определенное значение поднабора также возвращает NA? - PullRequest
0 голосов
/ 15 октября 2018

Я только начинаю изучать R и наткнулся на следующий фрагмент кода:

vec_1 <- c("a","b", NA, "c","d")

# create a subet of all elements which equal "a"
vec_1[vec_1 == "a"]

В результате получается

## [1] "a" NA

Мне просто любопытно, так как яподмножество vec_1 для значения "a", почему NA также отображается в моих результатах?

1 Ответ

0 голосов
/ 15 октября 2018

Это потому, что результат чего-либо == NA равен NA.Четный NA == NA равен NA.

Вот результат vec_1 == "a" -

[1] TRUE FALSE NA FALSE FALSE

, а NA не TRUE или FALSE таким образом, когда вы устанавливаете что-либо на NA, вы получаете NA.Проверьте это -

vec_1[NA]
[1] NA NA NA NA NA

При работе с NA, R пытается дать наиболее информативный ответ, т.е. T | NA возвращает TRUE, потому что не имеет значения, что такое NA.Вот еще несколько примеров -

T | NA
[1] TRUE

F | NA
[1] NA

T & NA
[1] NA

F & NA
[1] FALSE

R не может проверить равенство с NA.В вашем случае вы можете использовать оператор %in% -

5 %in% NA
[1] FALSE

"a" %in% NA
[1] FALSE

vec_1[vec_1 %in% "a"]
[1] "a"
...