Недавно я столкнулся с поведением в функции 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, но, тем не менее, мне бы очень хотелось узнать, что происходит здесь. У кого-нибудь есть идея?