我是 R 包作者,我收到了 CRAN 的通知表,我的包将被存档,因为我的建议中的包需要有条件地使用。在我的主要代码中,它们是有条件地使用的;我写了一个check.packages()函数,如果无法加载包,它会抛出错误。但是,在我的帮助文件中的示例中,我只是用 附加了包library(),这很可能是我犯错的地方。问题出现是因为我包含在 Suggests 中的一个包被归档了。
我的问题是如何有条件地使用帮助文件示例中的包?我尝试使用
ifelse{\Sexpr{isTRUE(requireNamespace("pkg"))}}{
#Example with pkg
}{
\dontrun{
#Example with pkg
}}
Run Code Online (Sandbox Code Playgroud)
也就是说,如果包是可加载的,则像往常一样显示示例,如果不是,则环绕\dontrun{}它。这在我预览帮助文件时有效,但 CRAN 检查告诉我我不能\ifelse在示例中使用。如果我的示例在我的建议中附加包很重要\dontrun,那么无论是否可以加载包,我是否都可以将它们全部包裹起来?
CRAN 对我的一个包裹if的插图中的简单声明感到满意:
if (requireNamespace('pkg', quietly = TRUE)) {
library('pkg')
# Example with pkg
} else {
message("'pkg' not available")
}
Run Code Online (Sandbox Code Playgroud)
我可能会遗漏一些东西,但我不明白为什么这种方法也不应该在示例中起作用;也许您需要unloadNamespace('pkg')在示例之后添加一个来进行清理?
| 归档时间: |
|
| 查看次数: |
135 次 |
| 最近记录: |