是否有办法将整个R会话的默认NA(缺失)从逻辑更改为字符(NA_character_
) ?
例如,如果您加载一个CSV,其中一列为空,它将被NA填充,并且该NA的类将是逻辑的。对于这个问题,我们想要一种方法来确保它总是NA_character_
。不要与字面值字符串"NA"混淆。
更多的例子:
> class(NA)
"logical" # No!
> class(NA_character_)
"character" # Yes! but for NA!
不确定我是否理解,但您可以指定na.strings
参数。
,
df <- read.table(text='
a b c d e
1 56 43.0 12 1 NA
2 23 NA 7 2 45
3 15 90.7 10 3 2
4 10 30.5 2 4 NA', na.strings="", as.is=T)
:
> class(df$b)
[1] "character"
>
据我所知,答案是否定的:
来自NA的文档
Details
The NA of character type is distinct from the string "NA". Programmers who need to specify an explicit missing string should use NA_character_ (rather than "NA") or set elements to NA using is.na<-.
我浏览了'options'函数的输入参数列表,似乎没有任何东西适用于这里。
我认为最好和最安全的方法是明确定义可能遇到的NAs。对于你的例子中的csv-case,我建议使用reader包,其中使用'col_type '来定义类。