R 为什么没有自然逻辑_
从R 为什么没有自然逻辑_,r,missing-data,R,Missing Data,从帮助(“NA”): 还有常数NA_integer_uu、NA_real_u、NA_complex_u和 支持缺失的其他原子向量类型的NA_字符 值:所有这些都是R语言中的保留字 我的问题是为什么没有NA\u logical\u或类似的东西,以及如何处理它 具体地说,我正在创建几个非常相似的大型数据.tables,它应该与以后的rbinding类兼容。当一个data.tables缺少变量时,我将创建该列,但将其设置为特定类型的所有NAs。然而,从逻辑上讲,我不能这样做 在这种情况下,这可能不太重
帮助(“NA”)
:
还有常数NA_integer_uu、NA_real_u、NA_complex_u和
支持缺失的其他原子向量类型的NA_字符
值:所有这些都是R语言中的保留字
我的问题是为什么没有NA\u logical\u
或类似的东西,以及如何处理它
具体地说,我正在创建几个非常相似的大型数据.table
s,它应该与以后的rbind
ing类兼容。当一个data.table
s缺少变量时,我将创建该列,但将其设置为特定类型的所有NA
s。然而,从逻辑上讲,我不能这样做
在这种情况下,这可能不太重要(data.table
不喜欢将列从一种类型强制到另一种类型,但它也不喜欢添加行,因此无论如何我必须创建一个新表来保存rbound版本),但我不明白为什么逻辑上应该存在的NA_逻辑
不存在
例如:
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"
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
库(data.table)
Y Y
a b
1:NA-NA
2:斑马纳
3:na0
4:NA-NA
5:NA-NA
>类别(Y$b)
[1] “整数”
两个问题:
NA_逻辑
不存在data.table
的上下文中,或者为了尽可能避免强制,我应该怎么做?我假设使用NA_integer\uu
在强制方面对我没有什么好处(它将强制我添加到0L/1L中的逻辑,这并不可怕,但并不理想) #define NA_LOGICAL R_NaInt
从$R\u HOME/R/include/R\u ext/Arith.h
中,我们可以建议在R代码中使用NA\u integer
或NA\u real
,因此使用普通的旧NA
:
R> as.logical(c(0,1,NA))
[1] FALSE TRUE NA
R>
R> as.logical(c(0L, 1L, NA_integer_))
[1] FALSE TRUE NA
R>
哪个有
R> class(as.logical(c(0,1,NA)))
[1] "logical"
R>
R> class(as.logical(c(0, 1, NA_real_)))
[1] "logical"
R>
或者我误解了你的问题?R的逻辑类型是三个值:yay、nay和missing。我们可以使用整数或数字中的NA进行转换。这有帮助吗?
NA
已经是逻辑的,所以不需要NA\u logical
。在需要缺少逻辑的情况下,只需使用NA
。注意:
> typeof(NA)
[1] "logical"
由于NA_*.
名称都是保留字,因此可能希望尽量减少它们的数量
例如:
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"
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
库(data.table)
X X
a b
1:NA-NA
2:NA-NA
3:NA错误
4:NA-NA
5:NA-NA
啊,这很有意义!他们可以添加一个变量NA_logical\uuu
,默认情况下它指向保留字,就像T
poitns toTRUE
?如果你真的必须拥有它,那么你可以自己定义它:NA_logical\uuu
当然,但是我永远不会使用它,因为我担心它会丢失在一台新电脑上可能会失败。现在我知道,NA
显然是一条路要走。这只是一个有趣的怪癖。我突然意识到,NA
是逻辑版本是完全有道理的,因为从那以后它可以被强制“向上”我忍不住要提到Dailywtf.com,在那里人们经常解释一个logical
有可能的值“TRUE,FALSE,File\u Not\u Found”。编辑-如果德克E没有指出R
实际上是这样做的,这会更有趣。