79

我正在尝试构建一个 R 包,以便阅读 CRAN 上的手册。我可以弄清楚,使用导入来加载命名空间中的函数是在描述文件中使用的最佳选择。添加到描述文件后,我也将其添加到命名空间文件中。我将 importFrom 添加到具有所需功能的命名空间文件中。

现在,当我对我的包运行 R CMD 检查时,我得到一个错误

不需要命名空间依赖项:'ggplot2'

更多信息:即使我将包添加到描述文件中的 Depends 中,它们也不会被加载。

请帮助解决这个问题。

请在下面找到我的描述文件

Package: bigpackage
Type: Package
Title: Some title
Version: 1.0
Date: 2012-10-25
Author: Mayank Bansal
Maintainer: somename
Imports : R(>= 2.15.1), SweaveListingUtils( >=0.5.5),xtable(>=1.7-0),
        brew(>=1.0-6), knitr(>=0.8), RHive(>= 0.0-6), ggplot2(>=0.9.2)
        , brew, knitr
SystemRequirements : LaTeX(texi2dvi) must be present in the system to
        create PDF reports
Description: Some Description
License: file LICENSE
LazyLoad: yes
ByteCompile: true
OS_type : unix
4

2 回答 2

101

如果您使用importimportFrom在您的 NAMESPACE 文件中,您应该在您的说明文件的 Imports 部分中有该包的条目(除非有原因需要使用 Depends 在这种情况下,该包应该在 Depends 中有一个条目,并且不是进口)

这是编写 R 扩展的相关部分

'Imports' 字段列出了从其名称空间导入(在 NAMESPACE 文件中指定)但不需要附加的包。'::' 和 ':::' 操作符访问的命名空间必须在此处列出,或者在 'Suggests' 或 'Enhances' 中列出(见下文)。理想情况下,该字段将包含所有使用的标准包,并且包含使用 S4 的包很重要(因为它们的类定义可能会更改,并且DESCRIPTION 文件用于决定在发生这种情况时要重新安装哪些包)。在“Depends”字段中声明的包不应该也在“Imports”字段中。


我做了一个单一功能的包f。我制作了一个 NAMESPACE 文件,其中的importFrom行与您所说的行相同。

命名空间文件

export("f")
importFrom("ggplot2","ggplot","geom_histogram")

此时,如果我R CMD check按预期运行,我会收到错误消息:

不需要命名空间依赖:'ggplot2'</p>

但是,如果我添加Imports: ggplot2到说明中,使我的说明文件如下所示,则它可以毫无问题地通过R CMD check

描述文件

Package: anRpackage
Type: Package
Title: What the package does (short line)
Version: 1.0
Date: 2012-11-07
Author: Me
Maintainer: Who to complain to <yourfault@somewhere.net>
Description: More about what it does (maybe more than one line)
License: GPL
Imports: ggplot2
于 2012-11-06T23:36:00.973 回答
9

发生这种情况的一个简单原因是,如果您在声明@import任何/所有函数时不小心使用了逗号

例如这个

#'
#' @import rvest, dplyr, stringr, jsonlite
#'
#' @export
#'

应该改成这个

#'
#' @import rvest dplyr stringr jsonlite
#'
#' @export
#'

这是一个常见错误,因为包在文件中逗号分隔DESCRIPTION

于 2019-09-02T06:35:59.367 回答