小编Chr*_*stK的帖子

运算符== data.table中的逻辑列不一致

请参阅以下可重现的示例:

library(data.table)
set.seed(123)
DT <- data.table(A=rep(0.3,10000))
DT[, B := runif(.N) < A]
DT[B == T, .N]
# [1] 3005
DT[, summary(B)]
#    Mode   FALSE    TRUE    NA's
# logical    6995    3005       0
Run Code Online (Sandbox Code Playgroud)

一切看起来都很好,两种方法的"TRUE"值相同.现在用新的替换col B.

DT[, B := runif(.N) < A]
DT[B == T, .N]
# [1] 3331
DT[, summary(B)]
#    Mode   FALSE    TRUE    NA's
# logical    6981    3019       0 
Run Code Online (Sandbox Code Playgroud)

B栏中'T'的计数不同!!! 它是同一列,但一种方法给出3331"TRUE"值,另一种方法给出3019.

当==被绕过时

DT[B != F, .N]
# [1] 3019
DT[, summary(B)]
#    Mode   FALSE    TRUE    NA's
# logical    6981    3019       0 …
Run Code Online (Sandbox Code Playgroud)

r data.table

13
推荐指数
1
解决办法
832
查看次数

标签 统计

data.table ×1

r ×1