【发布时间】:2022-01-09 22:13:00
【问题描述】:
我今天刚刚发现一个奇怪的观察结果,即 data.table 内的列中的 NAs 不会返回 TRUE 或 FALSE,而只会返回 NA。这个问题Comparing Column Values With NA 有答案,但它只涉及字符类型列,将NA 更改为'' 不会影响数据。
有没有办法在不改变列数据类型的情况下比较数据并取回TRUE 或FALSE?
library(data.table)
dt <- data.table(a = c(1:10)
, b = c(1:4,NA,6:10))
dt[a != b,]
在这种情况下,我希望获得第 5 行,因为在我看来 5 不等于 NA。如果有人能提供一些背景说明为什么会发生这种情况,那也太好了。
【问题讨论】:
-
就像你刚才说的比较 NA 返回 NA 而不是 TRUE 或 FALSE 这就是为什么它没有给出 5 与 NA 不同的“预期”结果并且将 NA 更改为 '' 确实适用于数字也是。
-
不,它不适用于数字,如果列是整数,则再次导致 NA。
-
我复制粘贴了您的代码并将 NA 替换为 '' 并且它起作用了
-
好吧,但是该列从一开始就是字符而不是整数。如果你想通过
dt[is.na(b), b := '']更改它是行不通的。
标签: r data.table