Недавно я столкнулся с поведением в функции table
, которая не была тем, что я ожидал:
Например, возьмем следующий вектор:
ex_vec <- c("Non", "Non", "Nan", "Oui", "NaN", NA)
Если я проверяю значения NA
в моем векторе, "NaN"
не считается одним (как ожидалось):
is.na(ex_vec)
# [1] FALSE FALSE FALSE FALSE FALSE TRUE
Но если я попытался получить разные значения частот:
table(ex_vec)
#ex_vec
#Nan Non Oui
# 1 2 1
"NaN"
не отображается в таблице.
Однако, если я "спрошу" table
, чтобы показать значения NA
, я получаю следующее:
table(ex_vec, useNA="ifany")
#ex_vec
# Nan NaN Non Oui <NA>
# 1 1 2 1 1
Итак, символьные строки "NaN"
рассматриваются как значение NA
внутри вызова table
, а обрабатываются в выводе как значение не NA
.
Я знаю (было бы лучше и) я мог бы решить свою проблему, преобразовывая свой вектор в factor
, но, тем не менее, мне бы очень хотелось узнать, что происходит здесь. У кого-нибудь есть идея?