R data.table - 行子集行为 - NA 值

R data.table - row subsetting behavior - NA values

我注意到 data.framedata.table 行子集在 NA 值方面有所不同。

干净的代码:

DF <- data.frame(COL1 = c(1, 2, NA))

DF[DF$COL1 == 1, ]
DF[DF$COL1 != 1, ]

DT <- data.table::data.table(COL1 = c(1, 2, NA))
DT[COL1 == 1, ]
DT[COL1 != 1, ]

带结果的代码:

> DF <- data.frame(COL1 = c(1, 2, NA))
> DF[DF$COL1 == 1, ]
[1]  1 NA
> DF[DF$COL1 != 1, ]
[1]  2 NA
> DT <- data.table::data.table(COL1 = c(1, 2, NA))
> DT[COL1 == 1, ]
   COL1
1:    1
> DT[COL1 != 1, ]
   COL1
1:    2

有什么特殊原因吗?

谢谢

来自帮助文件,?data.table,在i的讨论下:

integer and logical vectors work the same way they do in [.data.frame except logical NAs are treated as FALSE.

data.frame中,NA被视为NA。