0

我有两个数据框,每个都有一列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()但同时拒绝这两个表是等效的?

4

1 回答 1

2

我无法重现:

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

于 2020-09-07T22:41:55.113 回答