如何解决具有integer64数据类型的all.equal
我有两个数据帧,每个数据帧都有一列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)),"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","column"))
R> all.equal(original,new)
[1] "Component “a”: Mean relative difference: 669999"
R>
您正在运行哪个版本的bit64
?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。