不需要命名空间依赖项

May*_*sal 54 r

我正在尝试构建一个R包,以便阅读CRAN上的手册.我可以弄清楚使用导入来加载命名空间中的函数将是在Description文件中使用的最佳选择.添加到描述文件后,我还将其添加到命名空间文件中.我将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
Run Code Online (Sandbox Code Playgroud)

GSe*_*See 67

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

以下是Writing R Extensions的相关部分

"Imports"字段列出了从其导入名称空间的包(在NAMESPACE文件中指定),但不需要附加."::"和":::"运算符访问的命名空间必须在此处列出,或者在"建议"或"增强"中列出(见下文).理想情况下,此字段将包含所有使用的标准软件包,并且包含使用S4的软件包很重要(因为它们的类定义可以更改,而DESCRIPTION文件用于决定在发生这种情况时要重新安装的软件包).在"Depends"字段中声明的包不应该也在"Imports"字段中.


我用一个函数制作了一个包f.我创建了一个NAMESPACE文件,其中importFrom包含您在其中所说的相同行.

NAMESPACE文件

export("f")
importFrom("ggplot2","ggplot","geom_histogram")
Run Code Online (Sandbox Code Playgroud)

此时,如果我R CMD check按预期运行,则会出现错误:

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

但是,如果我添加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
Run Code Online (Sandbox Code Playgroud)

  • 最后!你已经显示了你的描述文件.现在问题很明显了.你在"Imports"和":"之间有一个空格,它应该是`Imports:`,而不是`Imports:` (3认同)

use*_*745 8

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

比如这个

#'
#' @import rvest, dplyr, stringr, jsonlite
#'
#' @export
#'
Run Code Online (Sandbox Code Playgroud)

应该改成这个

#'
#' @import rvest dplyr stringr jsonlite
#'
#' @export
#'
Run Code Online (Sandbox Code Playgroud)

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