包开发:run_examples找不到函数

时间:2014-01-06 01:34:43

标签: r devtools

我正在开发一个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_funrun_examples可见?我已经检查过我的R会话中确实存在my_pk_fun

更新 在Dirk的评论之后,我检查了我的命名空间文件,发现它完全是空的。正如documentation所建议的那样(虽然不推荐),我插入了exportPattern("^[^\\.]"),它似乎应该导出所有函数,包括my_pk_fun。但是,在重复上述实验后,(a)我得到相同的错误,并且(b)删除了命名空间文件的内容!为什么run_examples清空我的命名空间文件?

1 个答案:

答案 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