自制R包依赖包未自动安装的技术问题咨询
解决你的R包依赖提示问题
兄弟,我太懂你刚搞完第一个R包就踩依赖坑的心情了!你现在遇到的问题根源,就是没在包的DESCRIPTION文件里正确配置必需的依赖项,导致用户安装你的包时,系统不会自动帮他们拉取运行所需的依赖包。
根据R包开发权威指南中关于Imports字段的说明:此处列出的包必须存在才能使你的包正常工作,实际上任何时候你的包被加载或运行,这些依赖包都得在场。
给你一套直接能解决问题的步骤:
- 打开你包根目录下的
DESCRIPTION文件 - 找到(如果没有就新增)
Imports字段,把你的包运行必须的所有依赖包列在这里,格式是包名用逗号分隔,还可以标注最低版本要求,比如:Imports: dplyr (>= 1.0.0), ggplot2 - 保存文件后,如果你用devtools开发,就在R控制台运行
devtools::document(),它会帮你同步依赖配置到包的命名空间;如果不用devtools,要确保你的NAMESPACE文件里也正确引用了这些依赖(比如用import(dplyr)这类语句) - 这样处理后,不管用户是本地安装你的包,还是未来你把包推到CRAN,R都会自动检查并安装
Imports里的所有依赖包,再也不会弹出“所需包不可用”的错误了
额外提个小细节:如果有些包只是你的包的可选功能用到,不是运行必需的,那可以用Suggests字段,但这种情况你要在代码里加requireNamespace("包名", quietly = TRUE)来做判断,不过看你的情况,这些依赖是必须的,所以用Imports就对了。
内容的提问来源于stack exchange,提问作者Ketty




