我正在开发一个R包,pk
。我已成功安装并使用它,现在我正在尝试使用run_examples
包中的devtools
函数清理示例。但是,它在第一个例子中崩溃了:
> require(pk)
> require(devtools)
> run_examples("~/[full path]/pk")
Updating pk documentation
Running 45 example files in pk
--------------------------------------------------------------------------------
Loading pk
Running examples in pk-package.Rd
--------------------------------------------------------------------------------
1> ########################################################################
1> ## Simulate a dataset ... blah blah
1> set.seed(1)
1> x = my_pk_fun(a = 1)
Error in eval(expr, envir, enclos) : could not find function "my_pk_fun"
Loading pk
由于我已经加载了我的包(使用require
),我还需要做些什么才能使my_pk_fun
对run_examples
可见?我已经检查过我的R会话中确实存在my_pk_fun
。
更新
在Dirk的评论之后,我检查了我的命名空间文件,发现它完全是空的。正如documentation所建议的那样(虽然不推荐),我插入了exportPattern("^[^\\.]")
,它似乎应该导出所有函数,包括my_pk_fun
。但是,在重复上述实验后,(a)我得到相同的错误,并且(b)删除了命名空间文件的内容!为什么run_examples
清空我的命名空间文件?
答案 0 :(得分:0)
我猜想解决了我自己的问题:
我省略的一个细节是,在我让run_examples
完成任何事情之前,它要求我首先安装roxygen2
包(尽管roxygen2
仅在下面列出"在devtools
文档中建议"。
在挖掘run_examples
的源代码时,我确实找到了roxygenize
的一些用法。已经previously noted对包进行漫游可以起到重写NAMESPACE
文件的作用。
明确地说,run_examples
清空我的NAMESPACE
文件的原因是(1)run_examples
为我的包充分氧化,而(2)我从未包含任何# @export
命令(或者我的源文件中的任何其他roxygen2-speak)。
结论:除非您在roxygen2
框架内构建软件包,并在源代码中包含所有.Rd
文档作为注释,否则请勿使用run_examples
!似乎应该在run_examples
文档中对此进行警告。
出路:如果您真的必须使用run_examples
,并且您愿意稍微了解roxygen
,这实际上非常酷,然后开始here。