我在R中创建了一个新的软件包,我的软件包中的函数需要预先安装的软件包,如igraph,dplyr才能正常运行。在DESCRIPTION文件中,我在Imports字段中添加了这些包。但是当我运行我的包时,我得到了一个错误,指出所需的包还没有安装。
为了检查问题是什么,我单独安装了预先需要的软件包,并运行了我的软件包,然后它似乎工作得很好。
这是我的DESCRIPTION文件的样子
Package: xxx
Type: Package
Title: xxx
Version: 0.1.0
Author: xxx
Maintainer: xxx
Description: xxx
License: GPL-2
Encoding: UTF-8
LazyData: FALSE
Imports:
igraph,dplyr,network,gridExtra,centiserve
RoxygenNote: 6.1.1无论如何,我可以只加载我的软件包,然后自动加载预先需要的软件包,而不必手动加载预先需要的软件包,如igraph和dplyr。
发布于 2019-08-03 23:08:30
这个问题提出了与this Stack Overflow question相同的问题。我提供这个答案是为了提供比另一个问题更多的细节和官方来源。
问题是您在Imports而不是Depends中列出了包。通常这是可取的,但如果您这样做,您必须小心地在NAMESPACE文件中导入所需的函数。来自Writing R Extensions, Section 1.1.3
‘Imports’字段列出了从其导入名称空间(在名称空间文件中指定)但不需要附加的包。
因此,如果在Depends中指定了包,则在加载包时不会加载Imports中的包。
我的建议是将这些包保存在Imports中,然后在NAMESPACE中指定必要的导入函数,或者使用如下语法手动添加该文件中的语句
importFrom(foo, f, g)(请参阅Writing R Extensions, Section 1.5.1),或通过R脚本中的roxygen2标记,如
#' @importFrom foo fhttps://stackoverflow.com/questions/57339290
复制相似问题