r data.table排除列中具有特定值的行也会删除NA



我在data.table中遇到了这种意外行为。当排除具有特定值的行时,特定列中具有NAs的行将被删除,如本例所示:

library(data.table)
dt_mtcars <- setDT(copy(mtcars))
set.seed(42)
na_rows <- runif(3, min = 1, max = nrow(mtcars))
dt_mtcars[ na_rows, cyl := NA]
dt_mtcars[ is.na(cyl), .N]
#> [1] 3
dt_mtcars <- dt_mtcars[ cyl != 4]
dt_mtcars[ is.na(cyl), .N]
#> [1] 0

创建于2022-01-27由reprex包(v2.0.1(

像一样排除行

library(data.table)
dt_mtcars <- setDT(copy(mtcars))
set.seed(42)
na_rows <- runif(3, min = 1, max = nrow(mtcars))
dt_mtcars[ na_rows, cyl := NA]
dt_mtcars[ is.na(cyl), .N]
#> [1] 3
dt_mtcars <- dt_mtcars[ !cyl %in% 4]
dt_mtcars[ is.na(cyl), .N]
#> [1] 3

创建于2022-01-27由reprex包(v2.0.1(

确实具有预期结果。在上面的第一个例子中,我期望得到同样的结果,这是不是错了?或者这是data.table中的一个错误?

这不是data.table问题。

在第一种情况下,您没有选择NAs:

NA != 4
[1] NA

在第二种情况下:

!NA %in% 4
[1] TRUE

相关内容

  • 没有找到相关文章

最新更新