如何使包中的依赖项成为可选

Jan*_*ary 6 dependencies r package

我正在 R 中编写一个包,其中 \xe2\x80\x93 等 \xe2\x80\x93 可以使用 rgl 显示绘图。然而,我和我的学生一起发现 rgl 很麻烦:尤其是对于那些使用 Mac 的人。我最终花了很多时间帮助他们安装 RGL。

\n\n

是否有一种适当的、CRAN 认可的方法可以使包选择性地依赖于 rgl?如果无法加载 rgl,某些函数会发送警告消息并正常退出?我应该怎样做最好?

\n\n

编辑:我知道如何在函数中实际执行此操作;但是,我不知道如何在包要求中正式定义它,以便 (i) CRAN 不会抱怨,但 (ii) rgl 被正式指定为可选依赖项。

\n

nic*_*ola 7

requireNamespace在使用以下函数的定义中使用rgl

functionWithRgl<-function(...) {
   if (!requireNamespace("rgl", quietly = TRUE)) {
        warning("The rgl package must be installed to use this functionality")
        #Either exit or do something without rgl
        return(NULL)
    }
    #do stuff with rgl here prefixing it
    rgl::someRglFunction(someArguments)
    #...
}
Run Code Online (Sandbox Code Playgroud)

这样您就不需要rgl在包的DependsImport部分中声明。Description

  • @January你的问题(甚至你的具体例子)由WRE涵盖:https://cran.r-project.org/doc/manuals/r-release/R-exts.html#Suggested-packages (3认同)