【问题标题】:Package development: run_examples could not find function包开发:run_examples 找不到函数
【发布时间】:2014-01-06 01:34:43
【问题描述】:

我正在开发一个 R 包,pk,比如说。我已经成功安装并使用了它,现在我正在尝试借助 devtools 包中的 run_examples 函数清理示例。但是,它在第​​一个示例中崩溃:

> 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 可见?我检查了my_pk_fun 确实存在于我的 R 会话中。

更新: 根据 Dirk 的评论,我检查了我的命名空间文件,发现它完全是空的。按照documentation 的建议(尽管不推荐),我插入了exportPattern("^[^\\.]"),它似乎应该导出所有功能,包括my_pk_fun。然而,在重复上面的实验后,(a)我得到了同样的错误,(b)命名空间文件的内容被删除了!为什么run_examples 清空我的命名空间文件?

【问题讨论】:

  • 您是否通过NAMESPACE 文件导出了my_pk_fun
  • @DirkEddelbuettel,查看更新。

标签: r devtools


【解决方案1】:

我推测我自己的问题的解决方案:

我省略的一个细节是,在我可以让run_examples 做任何事情之前,它需要我首先安装roxygen2 包(即使roxygen2 仅在@ 中的“建议”下列出987654326@ 文档!)。

在挖掘run_examples 的源代码时,我确实发现了roxygenize 的一些用途。 previously noted 对一个包进行氧化可能会产生重写 NAMESPACE 文件的效果。

明确地说,run_examples 清空我的NAMESPACE 文件的原因是(1)run_examples roxygenized 我的包,而(2)我从未包含任何# @export 命令(或任何其他 roxygen2-speak,就此而言)在我的源文件中。

结论:除非你在roxygen2 框架内构建你的包,并且在你的源代码中包含你所有的.Rd 文档作为cmets,否则不要使用run_examplesrun_examples 文档中似乎应该对此有警告。

一条出路:如果你真的必须使用run_examples,并且你愿意了解一点roxygen,这实际上很酷,那就开始here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-20
    • 2023-03-07
    • 1970-01-01
    • 2021-10-23
    • 2019-12-25
    • 2018-11-09
    • 2018-05-19
    • 1970-01-01
    相关资源
    最近更新 更多