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

标签 r cran

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

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

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

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

最佳答案

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

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

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

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

关于r - 在 R 包开发中什么时候和什么时候不使用\donttest 和\dontrun?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68935126/

相关文章:

r - 一组经度/纬度点之间的最大距离

r - R CRAN Check : No repository set, 中的注释因此跳过了循环依赖性检查

R `parallel` 包在 CRAN 上不存在?

r - 如何在 R 包中加载依赖项?

r - 在 R 中调用 "install.packages()"时从 Github 安装一些部件

r - 在网站后台使用R来生成统计数据

unique.default(x) unique() 中的 R 错误仅适用于向量

sql-server - 如何管理 R 包中的数据库连接

r - Xaringan:数学在脚注类中呈现为内联代码

r - 使用三点 "..."参数的奇怪错误