gpt4 book ai didi

r - 为什么没有NA_logical_

转载 作者:行者123 更新时间:2023-12-03 23:34:00 26 4
gpt4 key购买 nike

来自 help("NA") :

There are also constants NA_integer_, NA_real_, NA_complex_ and NA_character_ of the other atomic vector types which support missing values: all of these are reserved words in the R language.



我的问题是为什么没有 NA_logical_或类似的,以及如何处理它。

具体来说,我正在创建几个非常相似的大型 data.table s,它应该与以后的类兼容 rbind ing。当其中之一 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 的逻辑,这并不可怕,但并不理想。
  • 最佳答案

    NA已经合乎逻辑了 NA_logical_不需要。只需使用 NA在您需要缺少逻辑的情况下。笔记:

    > typeof(NA)
    [1] "logical"

    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

    关于r - 为什么没有NA_logical_,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19564748/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com