我对某事感到困惑。当我把这个功能放入包
时oddTranspose <- function(x) {
t(x)
}
一切正常
m <- matrix(c(1,0,0,0), nrow=2)
M <- as(m, "Matrix")
oddTranspose(m) # works
oddTranspose(M) # works
然后,当我使用devtools :: test()时,它停止工作
devtools::test()
oddTranspose(m) # works
oddTranspose(M)
## t.default(x) : argument is not a matrix
这对我来说有问题,因为我使用以下工作流测试我的包:
构建包,放置一个名为
的文件package_root \ tests \ testthat_tests.R,正文
require(testthat)
require(myPackage)
test_check('myPackage')
然后在
package_root \ tests \ testthat \ file.R,我把测试
然后我用R
在R中测试它们library(testthat)
setwd("package_root/tests")
devtools::test()
我该怎么办?
请注意,我免除了包裹开销的所有文本,但包裹的NAMESPACE导入了Matrix包并导出了oddTranspose,并且包裹描述&#34;取决于&#34;在Matrix上。
答案 0 :(得分:0)
解决了这个问题的原因是(1)将所有setGeneric调用移动到all.R(或者早期加载.R文件)和(2)将所有setMethod调用移动到函数所在文件的内部。