在加载caret
包的命名空间时,我发现以下情况:
# 1.
set.seed(1)
print(rnorm(1)) # -0.6264538
# 2. Restart R session
# 3.
set.seed(1)
loadNamespace('caret')
print(rnorm(1)) # -0.3262334
# 4. Restart R session
# 5.
loadNamespace('caret')
set.seed(1)
loadNamespace('caret')
print(rnorm(1)) # -0.6264538
当我为加载caret
命名空间的某些函数编写单元测试代码时,这给我带来了麻烦。一个例子如下:
档案R/abn.R
:
abn <- function(){
requireNamespace('caret')
round(rnorm(1), 5)
}
档案tests/testthat/test_abn.R
:
context("Test abnomality")
test_that("Anomaly situation", {
requireNamespace('caret') # Without this line, devtools::check() will fail
# abn() not equal to -0.62645.
# 1/1 mismatches
# [1] -0.326 - -0.626 == 0.3
set.seed(1)
expect_equal(abn(), -0.62645)
})
您可以看到我的解决方案。
我在这里想念一下吗?
有没有可靠的方法来避免这种情况?
或者,这种解决方法可能会帮助遇到类似问题的人。