gpt4 book ai didi

r - CRAN 要求用\donttest{} 替换\dontrun{} 后 R 包中的问题

转载 作者:行者123 更新时间:2023-12-03 21:11:15 25 4
gpt4 key购买 nike

我向 CRAN 提交了一个包,他们要求我更换 \dontrun{}来自 \donttest{}在 Rd 文件中并重新提交。我正在使用 \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例子。根据 NEWS R-开发:

"R CMD check --as-cran now runs \donttest examples (which are run by example()) instead of instructing the tester to do so. This can be temporarily circumvented during development by setting environment variable R_CHECK_DONTTEST_EXAMPLES to a false value."


由于我打算将包重新提交给 CRAN,因此设置 _R_CHECK_DONTTEST_EXAMPLES_false本地不会帮助我。
我还找到了 this最近在一个 devtools 中的讨论哈德利·威克姆 (Hadley Wickham) 指出的问题:

"Generally, now if you don't want to run tests on CRAN \dontrun{} is more likely to work, but using \dontrun{} may cause initial submission to fail."


所以现在我不知道如何继续,因为如果我重新提交包含所需更改的包,我已经知道它会在 R CMD check --as-cran 中引发错误。 ,因此它可能无法通过 CRAN 的自动预测试。
编辑:
按照建议 here我试过 if(interactive()){}而不是 \dontrun{} .此解决方案成功于 R CMD check --as-crandevtools::check()但我认为这不是解决这个问题的最合适的方法,因为它不适用于 example() (抛出错误并且不显示其余示例)。 \dontrun{}使用 example() 效果更好因为它打印了所有示例,但注释掉了用 \dontrun{} 包裹的示例。 .

最佳答案

我不认为包示例是“应该抛出错误消息的示例”的正确位置。
当您将这些“示例”移至 testthat 时,您的问题将很容易解决。单元测试。

expect_error()
expect_warning()
查看您的包是否按预期抛出警告/错误。
如果您真的想告知用户他们应该避免输入的内容,也许您可​​以将其作为注释添加到示例或其他文档中(详细信息,参数)
您在其他包示例中经常看到的内容如下:
## Example for working
function(x, abc = "5)

## This would give an error because
# function(x, abc = "falsch")

## Working example 2
function(x)
x <- x+y

关于r - CRAN 要求用\donttest{} 替换\dontrun{} 后 R 包中的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63693563/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com