当您处理 时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"
和一个实际的缺失值,因此您在显示vsNA
时看到的差异。例子: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
通过尖括号进行区分。