R data.table - 行子集行为 - NA 值
R data.table - row subsetting behavior - NA values
我注意到 data.frame
和 data.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。
我注意到 data.frame
和 data.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。