我注意到,当涉及到NA值时,data.frame
和data.table
行子集有所不同。
清洁代码:
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
有什么特别原因吗?
由于
答案 0 :(得分:1)
在?data.table
:
i
开始
整数和逻辑向量的工作方式与它们在[.data.frame中的工作方式相同,只是逻辑NA被视为FALSE。
在data.frame
中,NAs被视为NA。