# 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
也许一个例外是data.table。在那里,似乎一个字符字段将其打印为< NA >,而一个数字字段将其打印为NA。注:我在中添加了额外的空格< NA >,否则此网页无法正常显示。
library("data.table")
y<-data.table(a=c("a","b",NA))
print(y)
a
1: a
2: b
3: < NA >
factor(y$a)
[1] a b < NA >
Levels: a b
## we enter a numeric argument
y<-data.table(a=c(1,2,NA))
print(y)
a
1: 1
2: 2
3: NA
factor(y$a)
[1] 1 2 < NA >
Levels: 1 2
3条答案
按热度按时间u0njafvf1#
当你处理
factors
时,当NA
被括在尖括号(<NA>
)中时,这表明它实际上是NA。当它是不带括号的
NA
时,则它 * 不是 * NA,而是标签为"NA"
的真因子编辑回答@Arun的问题:
R
只是试图区分一个值为两个字母"NA"
的字符串和一个实际的缺失值NA
。示例:注意NA的两种不同风格:
但是,如果我们只看'df$y'
但是,如果我们去掉引号(类似于将data.frame打印到控制台时看到的):
因此,我们再次通过角括号得到
NA
的区别。qyzbxkaa2#
这就是R在因子中显示
NA
的方式:假设这是一种区分
NA
和"NA"
的方法,因为一个因子的打印方式不带引号,即使是字符标签/级别:64jmpszr3#
也许一个例外是data.table。在那里,似乎一个字符字段将其打印为< NA >,而一个数字字段将其打印为NA。注:我在中添加了额外的空格< NA >,否则此网页无法正常显示。