all.equal() 数据类型为 integer64

all.equal() with integer64 data type

我有两个数据框,每个数据框都有一个 integer64 类型的列。当我使用 all.equal() 比较数据帧时,我得到 TRUE,即使值非常不同:

library(bit64)
original <- data.frame("a" = as.integer64(c(2, 3, 6)), "b" = c("second", "data", "column"))
new <- data.frame("a" = as.integer64(c(2, 30000, 6000001)), "b" = c("second", "data", "column"))
all.equal(original, new)
# TRUE

我知道 all.equal() 可以接受非精确匹配(例如四舍五入),对于严格匹配 identical() 是更安全的选择,但为什么 all.equal() 这么说这两个数据框是一样的?有没有一种方法可以将数据框与 all.equal() 的有用细节进行比较,但拒绝将这两个表视为等效?

我无法重现:

R> library(bit64)
R> original <- data.frame(a=as.integer64(c(2, 3, 6)), 
+                         b=c("second", "data", "column"))
R> new <- data.frame(a=as.integer64(c(2, 30000, 6000001)), 
+                    b=c("second", "data", "column"))
R> all.equal(original, new)
[1] "Component “a”: Mean relative difference: 669999"
R> 

bit64 是哪个版本 运行?