2

我正在创建一个 R 包,并发现将一个文件中的部分逻辑分解为我在同一个文件中定义的内部辅助函数很有用。我有一种特殊情况,我的函数通过match.fun(). 由于它们对其他功能或人员没有用处,因此我不想将它们放在单独的文件中,也不想导出它们。

我所有的测试案例都使用test_dir(). 当我不导出这些函数时,我的测试用例在 R CMD 检查期间失败。

"object 'helperfunction1' of mode 'function' was not found", quote(get(as.character(FUN),
         mode = "function", envir = envir)))

看完这篇文章后,如果我明确地将导出条目导出或添加到 NAMESPACE,我就能让事情正常工作,但我又不想导出这些。

有没有更好的方法可以做到这一点并且不需要我导出?(我承认问题的根源可能是match.fun()并且对在运行时调用函数的其他方式持开放态度。)

4

1 回答 1

0

从记忆中,我上次阅读它时在文档中并不清楚(它可能已经改变),但只要一切都在正确的目录中,它就会正常工作(无需导出):

你应该有一个文件:

tests/run-all.R

看起来像:

library(testthat)
library(myPackage)

test_package("myPackage")

然后你的个人测试文件应该在目录中inst/tests

这些将在您执行时运行R CMD check,否则您可以手动调用test_package("myPackage")R

于 2013-10-10T04:39:46.973 回答