我是R包作者,我收到CRAN的通知表,我的包将被归档,因为我的建议中的包需要有条件地使用。在我的主要代码中,它们被有条件地使用;我编写了一个check.packages()
函数,如果无法加载包,则抛出错误。但是,在我的帮助文件的示例中,我只是使用library()
附加了包,这可能是我犯错误的地方。问题出现了,因为我在“建议”中包含的包已存档。
我的问题是如何在帮助文件的示例中有条件地使用包?我尝试使用
ifelse{\Sexpr{isTRUE(requireNamespace("pkg"))}}{
#Example with pkg
}{
\dontrun{
#Example with pkg
}}
也就是说,如果包是可加载的,则像往常一样显示示例,如果不是,则在其周围包裹\dontrun{}
。这在我预览帮助文件时有效,但CRAN检查告诉我在示例中我不能使用\ifelse
。如果我的示例在我的Suggests中附加包很重要,那么无论是否可以加载包,我唯一的选择是将\dontrun
包裹在所有这些包中吗?
答案 0 :(得分:0)
CRAN对我的packages之一的小插图中的简单if
语句感到满意:
if (requireNamespace('pkg', quietly = TRUE)) {
library('pkg')
# Example with pkg
} else {
message("'pkg' not available")
}
我可能会遗漏一些东西,但是我看不到为什么这种方法在示例中也不起作用。也许您需要在示例后添加unloadNamespace('pkg')
进行清理?