如何在帮助文件示例中有条件地使用 R 包?

Noa*_*oah 5 r

我是 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,那么无论是否可以加载包,我是否都可以将它们全部包裹起来?

ms6*_*609 1

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')在示例之后添加一个来进行清理?