r - CRAN 要求将 \dontrun{} 替换为 \donttest{} 后 R 包中的问题
问题描述
我向 CRAN 提交了一个包,他们要求我在 Rd 文件中替换\dontrun{}
为并重新提交。\donttest{}
我\dontrun{}
用来包装一些应该抛出错误消息的示例。
替换\dontrun{}
为之后,\donttest{}
我进行了一些测试并且R CMD check
仍然成功,但是由于包含以下示例,现在两者都devtools::check()
失败R CMD check --as-cran
了\donttest{}
:
checking examples with --run-donttest ... ERROR
经过一番浏览,我了解到 R 4.0.0 已更改R CMD check --as-cran
为运行\donttest
示例。根据 R-devel 的新闻:
“R CMD check --as-cran 现在运行 \donttest 示例(由 example() 运行),而不是指示测试人员这样做。这可以通过将环境变量R_CHECK_DONTTEST_EXAMPLES设置为 false 值在开发过程中暂时规避。”
由于我打算将包重新提交给 CRAN,因此设置_R_CHECK_DONTTEST_EXAMPLES_
为false
本地对我没有帮助。
我还在Hadley Wickham 指出的问题中发现了最近的讨论:devtools
“一般来说,现在如果你不想在 CRAN 上运行测试,\dontrun{} 更有可能工作,但使用 \dontrun{} 可能会导致初始提交失败。”
所以现在我不知道如何继续,因为如果我重新提交带有所需更改的包,我已经知道它会抛出一个错误R CMD check --as-cran
,因此它可能会使 CRAN 的自动预测试失败。
编辑:
正如这里建议的那样,我尝试if(interactive()){}
了而不是\dontrun{}
. 这个解决方案成功了R CMD check --as-cran
,devtools::check()
但我认为它不是解决这个问题的最合适的方法,因为它不能很好地工作example()
(抛出错误并且不显示剩余的示例)。\dontrun{}
效果更好,example()
因为它会打印所有示例,但会注释掉用\dontrun{}
.
解决方案
如果您知道某些内容会引发错误,则可以将其包装在try()
.
## example of failing code
try(stop("Here is an error"))
推荐阅读
- excel - VBA/Excel - 将列值与预定义集匹配
- android - 文件选择器不显示文本文件
- c++ - 未命名的命名空间、模板函数和多重包含
- javascript - 在循环内单击按钮时更改 div 样式
- html - 显示器内的图像:flex 项目部分变形或被切断
- sql - 无法从单个主键表中创建多个外键
- python - 动态投资组合再平衡 Python
- python - tkinter Frame python的放置
- iframe - 是否可以在 iframe 中使用图形工具包组件(mgt-people-picker、mgt-login 等)?
- python - 从字典列表的另一列中按值删除项目