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

时间:2016-12-14 18:24:00

标签: r data.table subset na

我注意到,当涉及到NA值时,data.framedata.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

有什么特别原因吗?

由于

1 个答案:

答案 0 :(得分:1)

?data.table

的讨论中,从帮助文件i开始
  

整数和逻辑向量的工作方式与它们在[.data.frame中的工作方式相同,只是逻辑NA被视为FALSE。

data.frame中,NAs被视为NA。