什么时候以及什么时候不在 R 包开发中使用 \donttest 和 \dontrun?

When and when not to use \donttest and \dontrun in R package development?

所以我正在将我的包提交给 CRAN,我对何时将示例包装在 \donttest\dontrun 中感到困惑。我有几个不同的案例:

  1. 例如return数据帧等
  2. 示例 return 通过 ggplot2 生成的静态图形
  3. return JavaScript 数字通过 plotly
  4. 生成的例子
  5. 读取或写入文件系统的示例(例如导入数据和编写电子表格)
  6. 示例 运行 闪亮的应用程序

我已经解决了 (1) 我不应该用 \donttest\dontrun 换行的问题。对于 (5) 我应该将整个函数包装在 if(interactive()){}.

还有第 2-5 种情况,我不确定是否应该将这些示例包装好或不包装好。我猜情节还可以,但不确定 reading/writing 文件。非常感谢任何提示或将我带到明确解释的地方。谢谢。

一般来说,除非您需要,否则您应该避免使用这些标记。如果示例执行的操作可能会失败,您将需要其中之一,因为 CRAN 会将失败视为您的包中的错误。如果他们做了一些危险的事情(例如在用户的主目录中创建文件、删除您创建的临时文件以外的文件、发送电子邮件等),您也会使用它们

\dontrun 标记更强。在过去,包含在其中的示例甚至不需要在语法上是正确的,尽管我认为这可能已经改变了。如果用户 运行 使用 example() 函数,他们将不会 运行 该代码。

对 运行 花费的时间太长且违反 CRAN 的 5 秒限制的示例使用 \donttest。用户 运行ning example() 会 运行 那些,但你的包的基本测试不会。有时 CRAN 会测试 \donttest 代码,所以它必须工作。 (一般来说,如果可以的话,最好快速给出示例 运行,不要达到 5 秒的限制。)

对于您的特定示例,none 需要任何包装,只要它们足够快,并且您可以安排所有文件系统更改都发生在 R 会话临时目录中。