r - 如何在包中使依赖项成为可选
问题描述
我正在用 R 编写一个包,除其他外,它可以用 rgl 显示图。然而,我和我的学生发现 rgl 很麻烦:尤其是那些使用 Mac 的人。我最终花了很多时间帮助他们安装 RGL。
是否有一种适当的、CRAN 认可的方式来使包可选地依赖于 rgl?如果无法加载rgl,某些函数会发送警告消息并优雅退出?我应该如何做到最好?
编辑:我知道如何在函数中实际执行它;但是,我不知道如何在包要求中正式定义它,以便 (i) CRAN 不会抱怨,但 (ii) rgl 被正式指定为可选依赖项。
解决方案
在使用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)
#...
}
这样你就不需要在你的包rgl
的Depends
orImport
部分中声明了。Description
推荐阅读
- product - magento 1.9 stock qty shipping message php code
- scala - 在Scala中将元组转换为数组
- node.js - 即使配置了环境,也找不到节点模块
- postgresql - 尝试将包含 timestampz 数组的列拆分为 Postgres 中的分隔文本字符串时出现“函数不存在”错误
- python - 你能在 python 中复制 matlab 的旧伪随机数生成器吗?
- networking - Istio 可以在延迟更高、丢包的环境中工作吗?
- r - 使用 ABC_mcmc 函数时的错误:
- java - 为什么我的数据结构很慢(自定义数据结构)
- powerbi - 如何创建和发布结合多个 Power Bi 报告的移动应用程序?
- node.js - 标头已发送但不知道为什么