2015-10-22 36 views
0

我對某事感到困惑。當我把這個功能到一個包在調用devtools :: test()後發現軟件包中的通用調度

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 ::試驗(+),它停止工作

devtools::test() 
oddTranspose(m) # works 
oddTranspose(M) 
## t.default(x) : argument is not a matrix 

這是因爲我使用以下工作流程測試我的軟件包:

構建軟件包,將一個fi樂叫

package_root \測試\ testthat_tests.R,用身體

require(testthat) 
require(myPackage) 
test_check('myPackage') 

,然後在

package_root \測試\ testthat \ file.R,我把測試

然後我用R測試它們與

library(testthat) 
setwd("package_root/tests") 
devtools::test() 

我該怎麼辦?

請注意,我省去了所有包開銷的文本,但包的NAMESPACE導入了Matrix包並導出了oddTranspose,並且包的描述「依賴於」Matrix。

回答

0

解決方法是:(1)將所有setGeneric調用移動到all.R(或者儘早加載.R文件);(2)將所有setMethod調用移動到函數所在文件的內部。

相關問題