[英]R package building: How to import a function from a package not on CRAN
我正在尝试将非 CRAN 存储库中的函数导入到我的包中。 我知道 R 在 CRAN 中搜索在DESCRIPTION
文件的Imports:
字段中声明的任何包。 例如,有什么方法可以从包“notoncran”中导入function
,该包仅在 Github(或其他非 CRAN 位置)上。
我已经找到了一个不需要的解决方法,它包括通过将我的函数定义为以下内容来完全绕过Imports:
字段:
myfun <- function(a,b){
x <- require(notoncran)
if(!x){
print("installing notoncran because you don't have it...")
devtools::install_github('repo/withpackage')
require(notoncran)
}
...
}
原则上我不喜欢这个想法,因为您在未经用户同意的情况下在某种程度上安装了一个/几个包,来自潜在的不受监管(理论上危险)的来源。 这也在一定程度上降低了功能的可读性,因为将功能与管理业务进行了权衡。 最后,这种方法最终需要运行require()
或library()
,将包的所有函数都扔到用户的命名空间中,这从来都不是理想的。
感谢您对此的任何帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.