r语言 - testthat::expect_equal,宽容对我不起作用



测试环境如下:

packageVersion("testthat")
# [1] ‘3.1.6`
testthat_tolerance()
# [1] 1.490116e-08

但是当我运行它时,它在差值远低于容限时失败:

Gamma <- 0.00020237234
expect_equal(Gamma, 0.0002023723)
Error: Gamma (actual) not equal to 0.0002023723 (expected).
actual:   0.00020237234
expected: 0.00020237230

自己设置容忍度并不能解决问题:

expect_equal(Gamma, 0.0002023723, tolerance = 1e-8)
Error: Gamma (actual) not equal to 0.0002023723 (expected).
actual : 0.00020237234
expected : 0.00020237230`

但是如果我放松容差,它就通过了测试:

expect_equal(Gamma, 0.0002023723, tolerance = 1e-6)

就我的目的而言,1e-6已经足够好了,但我觉得要么是有bug,要么是我遗漏了什么。

我从文件和控制台运行它,结果相同。

From man page for expect_equal

tolerance:传递给waldo::compare()。如果非null,将忽略小的浮点差异。它使用与all.equal()相同的算法,因此公差通常是相对的(即mean(abs(x - y)/mean(abs(y)) <公差),除非差异非常小,当它变成绝对(即平均值)(abs(x><宽容)。>

所以在你的情况下容忍度可能是相对的