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

时间:2018-02-13 17:22:34

标签: r

我是R包作者,我收到CRAN的通知表,我的包将被归档,因为我的建议中的包需要有条件地使用。在我的主要代码中,它们被有条件地使用;我编写了一个check.packages()函数,如果无法加载包,则抛出错误。但是,在我的帮助文件的示例中,我只是使用library()附加了包,这可能是我犯错误的地方。问题出现了,因为我在“建议”中包含的包已存档。

我的问题是如何在帮助文件的示例中有条件地使用包?我尝试使用

ifelse{\Sexpr{isTRUE(requireNamespace("pkg"))}}{
#Example with pkg
}{
\dontrun{
#Example with pkg
}}

也就是说,如果包是可加载的,则像往常一样显示示例,如果不是,则在其周围包裹\dontrun{}。这在我预览帮助文件时有效,但CRAN检查告诉我在示例中我不能使用\ifelse。如果我的示例在我的Suggests中附加包很重要,那么无论是否可以加载包,我唯一的选择是将\dontrun包裹在所有这些包中吗?

1 个答案:

答案 0 :(得分:0)

CRAN对我的packages之一的小插图中的简单if语句感到满意:

if (requireNamespace('pkg', quietly = TRUE)) {
  library('pkg')
  # Example with pkg
} else {
  message("'pkg' not available")
}

我可能会遗漏一些东西,但是我看不到为什么这种方法在示例中也不起作用。也许您需要在示例后添加unloadNamespace('pkg')进行清理?