来自help("NA"):
还存在支持缺失值的其他原子向量类型的常量NA_integer_,NA_real_,NA_complex_和NA_character_:所有这些都是R语言中的保留字.
我的问题是为什么没有NA_logical_或类似,以及如何处理它.
具体来说,我正在创建几个非常相似data.table的大型s,它们应该是类兼容的,以便以后使用rbind.当其中一个data.tables缺少变量时,我正在创建该列,但将其设置为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"
Run Code Online (Sandbox Code Playgroud)
两个问题:
NA_logical_存在,当它的亲戚呢?data.table尽可能避免胁迫的情况下做些什么呢?我假设使用NA_integer_在强制方面买了一点(它会强制我加入0L/1L的逻辑,这不是很糟糕,但并不理想.G. *_*eck 14
NA已经合乎逻辑,所以NA_logical_不需要.只需NA在需要缺少逻辑的情况下使用.注意:
> typeof(NA)
[1] "logical"
Run Code Online (Sandbox Code Playgroud)
由于NA_*_名称都是保留字,因此可能希望最小化它们的数量.
例:
library(data.table)
X <- data.table( a=NA_character_, b=rep(NA,5) )
X[ 3, b:=FALSE ]
> X
a b
1: NA NA
2: NA NA
3: NA FALSE
4: NA NA
5: NA NA
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1174 次 |
| 最近记录: |