来自help("NA")
:
还有其他支持缺失值的原子向量类型的常量 NA_integer_、NA_real_、NA_complex_ 和 NA_character_:所有这些都是 R 语言中的保留字。
我的问题是为什么没有NA_logical_
或类似的,以及如何处理它。
具体来说,我正在创建几个非常相似的大型data.table
s,它们应该与以后的类兼容rbind
。当其中一个data.table
s 缺少变量时,我正在创建该列,但将其设置为NA
特定类型的所有 s。但是,从逻辑上讲,我不能这样做。
在这种情况下,它可能无关紧要(data.table
不喜欢将列从一种类型强制转换为另一种类型,但它也不喜欢添加行,所以我必须创建一个新表来保存 rbound 版本),但我很困惑至于为什么NA_logical_
逻辑上应该存在的 不存在。
例子:
library(data.table)
Y <- data.table( a=NA_character_, b=rep(NA_integer_,5) )
Y[ 3, b:=FALSE ]
Y[ 2, a:="zebra" ]
> Y
a b
1: NA NA
2: zebra NA
3: NA 0
4: NA NA
5: NA NA
> class(Y$b)
[1] "integer"
两个问题:
- 为什么不
NA_logical_
存在,而它的亲戚却存在? data.table
在这种情况下或只是为了尽可能避免强制,我应该怎么做?我认为使用NA_integer_
在强制方面对我没什么好处(它会强制我添加到 0L/1L 的逻辑,这并不可怕,但并不理想。