R data.table未正确筛选

R data.table未正确筛选,r,filter,data.table,R,Filter,Data.table,在使用data.table和筛选时,我得到了错误的结果 我在这里展示了一个可复制的示例,以了解问题: set.seed(123) results <- data.table(id = 1:1000000, v1 = rnorm(1000000)) rs <- data.table(type = 1:1000000 %% 5, prob = rnorm(1000000)) results[, `:=`(cls = rs$type, cls.prob = rs$prob)] resul

在使用data.table和筛选时,我得到了错误的结果

我在这里展示了一个可复制的示例,以了解问题:

set.seed(123)
results <- data.table(id = 1:1000000, v1 = rnorm(1000000))
rs <- data.table(type = 1:1000000 %% 5, prob = rnorm(1000000))

results[, `:=`(cls = rs$type, cls.prob = rs$prob)]
results[cls != 0 & abs(v1 - cls.prob) < 0.3, `:=`(cls = 3, cls.prob = 1)]
summary(results[cls == 4, cls])
   # Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   #    4       4       4       4       4       4 
results[cls != 0 & abs(v1 - cls.prob) < 0.2, `:=`(cls = 3, cls.prob = 1)]
summary(results[cls == 4, cls])
   # Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   #    4       4       4       4       4       4 
results[cls != 0 & abs(v1 - cls.prob) < 0.5, `:=`(cls = 3, cls.prob = 1)]
summary(results[cls == 4, cls])
   # Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   # 3.00    4.00    4.00    3.87    4.00    4.00 
以及此版本的data.table:

> packageVersion('data.table')
[1] ‘1.9.4’

数据的版本
1.10.4.3
。表您的代码在Windows上没有奇怪的行为。对我来说,代码工作正常。我猜你在总结之前手动执行了一行。我已经检查了更新的版本,它也适用于我,我怀疑这与data.table的版本有关,但我们目前无法升级它……我建议在他们的github站点上打开一个问题。如果在您使用的版本和1.10.4.3(Clemsangs版本)之间修复了某些错误,他们可能会提供答案。可以找到他们的问题页面。数据的版本
1.10.4.3
。表Windows上的代码没有奇怪的行为。对我来说,代码工作正常。我猜你在总结之前手动执行了一行。我已经检查了更新的版本,它也适用于我,我怀疑这与data.table的版本有关,但我们目前无法升级它……我建议在他们的github站点上打开一个问题。如果在您使用的版本和1.10.4.3(Clemsangs版本)之间修复了某些错误,他们可能会提供答案。可以找到他们的问题页面。
> packageVersion('data.table')
[1] ‘1.9.4’