Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
330 views
in Technique[技术] by (71.8m points)

r - Namespace dependencies not required

I am trying to build an R package so reading the manual on CRAN. I could figure out that using imports to load functions in your namespace would be the best bet to use in the Description file. After adding to the description file, I also added it to the namespace file. I added importFrom to the namespace file with the functions required.

Now when I run R CMD check on my package, I get an ERROR as

Namespace dependencies not required : 'ggplot2'

Further information : Even if I add the package to the Depends in the description file, they are not getting loaded.

Please help with this.

Please find my description file below

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
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

If you use import or importFrom in your NAMESPACE file, you should have an entry for that package in the Imports section of your DESCRIPTION file (unless there is a reason that you need to use Depends in which case the package should have an entry in Depends, and not Imports)

Here is a relevant section of Writing R Extensions

The ‘Imports’ field lists packages whose namespaces are imported from (as specified in the NAMESPACE file) but which do not need to be attached. Namespaces accessed by the ‘::’ and ‘:::’ operators must be listed here, or in ‘Suggests’ or ‘Enhances’ (see below). Ideally this field will include all the standard packages that are used, and it is important to include S4-using packages (as their class definitions can change and the DESCRIPTION file is used to decide which packages to re-install when this happens). Packages declared in the ‘Depends’ field should not also be in the ‘Imports’ field.


I made a package with a single function f. I made a NAMESPACE file with the same importFrom line that you say you have in yours.

NAMESPACE file

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

At this point, if I run R CMD check, as expected, I get an error:

Namespace dependency not required: ‘ggplot2’

But, if I add Imports: ggplot2 to the DESCRIPTION such that my DESCRIPTION file is as follows, it passes R CMD check with no problems.

DESCRIPTION file

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 <[email protected]>
Description: More about what it does (maybe more than one line)
License: GPL
Imports: ggplot2

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...