r - testthat expect_identical FALSE 直到包装在 as.data.table 中
问题描述
我已经阅读了 expect_equal 和 expect_identical 之间的区别。
话虽如此,我有一个函数可以生成如下所示的数据表:
Thing1 Thing2 Thing3
Thing1 34.6 23.4 54.2
Thing2 34.7 33.2 32.1
Thing3 32.7 33.5 33.8
structure(list(` ` = c("Thing1", "Thing2", "Thing3"), `Thing1` = c(34.6,
34.7, 32.7), `Thing2` = c(32.4, 33.2, 33.5), `Thing3` = c(33,
32.1, 33.8)), .Names = c(" ", "Thing1", "Thing2", "Thing3"), row.names = c(NA,
-3L), class = c("data.table", "data.frame"))
我们称这张桌子为output
。我将此 data.table 保存在 .rds 中,然后使用 readRDS 重新加载它。这个新表称为test
. 结构不变,只有指针不同。尽管如此,运行identical(test, output)
会产生错误。同样,结构与指针的期望相同。所有的课都是一样的。
但是,这:identical(as.data.table(test), output)
产量TRUE
。有谁知道这里发生了什么?这不是一个简单的班级问题。我不知所措。
您可以通过执行以下操作自己重新创建此问题:
x <- as.data.table(mtcars)
saveRDS(x, "~/test.rds")
y <- readRDS("~/test.rds")
str(x)
str(y)
identical(x, y)
更新
我检查mem_change()
了两个对象,它是不同的。然而,object.size()
是一样的。
解决方案
推荐阅读
- object - 包含 9999 多个对象的图库页面
- security - 如何获得带有 CWE 标记的 CVE 数据集?
- c - 全长Hexa值未在C中转换为全长字符串?
- python - 我写了一个从哈希中查找密码的程序,我有一些哈希,但它只写了最后一行。问题是什么
- arrays - 在matlab中重新排序数组维度
- javascript - 更新时重置页面
- flutter - 完成 Future 函数后在 StatefullWidget 中调用构建函数
- c++ - 我正在使用 Arduino 构建一个 mp3 播放器,但正在使用的盾牌是 spark fun mp3 盾牌,但它仅限于 9 首歌曲帮助我
- database - 如何先获取特定文件,然后在 mongodb 中休息?
- python - Django 异常:'TemplateDoesNotExist at /'