Ответ 1
Когда вы имеете дело с factors
, когда NA
заключен в угловые скобки (<NA>
), это указывает на то, что на самом деле это NA.
Если это NA
без скобок, то это не NA, а скорее правильный фактор, чья метка "NA"
# Note a 'real' NA and a string with the word "NA"
x <- factor(c("hello", NA, "world", "NA"))
x
[1] hello <NA> world NA
Levels: hello NA world <~~ The string appears as a level, the actual NA does not.
as.numeric(x)
[1] 1 NA 3 2 <~~ The string has a numeric value (here, 2, alphabetically)
The NA numeric value is just NA
Изменить для ответа на вопрос @Arun:
R
просто пытается различить строку, значением которой являются две буквы "NA"
и фактическое отсутствующее значение, NA
Таким образом, разница, которую вы видите при отображении df
по сравнению с df$y
. Пример:
df <- data.frame(x=1:4, y=c("a", NA_character_, "c", "NA"), stringsAsFactors=FALSE)
Обратите внимание на два разных стиля NA:
> df
x y
1 1 a
2 2 <NA>
3 3 c
4 4 NA
Однако, если мы посмотрим только на "df $y"
[1] "a" NA "c" "NA"
Но, если мы удалим кавычки (похожие на то, что мы видим при печати data.frame на консоль):
print(df$y, quote=FALSE)
[1] a <NA> c NA
Таким образом, мы снова имеем различие NA
через угловые скобки.