Когда вы имеете дело с 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's 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)
Обратите внимание на два разных стиля АН:
> 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
через угловые скобки.
person
Ricardo Saporta
schedule
27.04.2013