tl;dr version of my question
If I want to import packages, do I have to manually write import()
directives into my NAMESPACE file? It seems like roxygen2 won't magically do that for me, even if I have them listed as "Imports:" in my description.
Fuller Version
This is a pretty dumb question, but I ask because the answer's not obvious to me.
I use roxygen2
to handle my R package documentation. When I want to be sure a function is exported, I add an @export
tag to its roxygen block. Subsequent runs of roxygenize()
will write the NAMESPACE directive accordingly.
But, my package currently imports several others:
Depends:
R (>= 2.13.0),
ggplot2 (>= 0.8.9)
Imports:
RColorBrewer,
plyr,
gridExtra
It appears that while roxygen2
will rewrite the NAMESPACE directive for exported functions, it won't automatically rewrite NAMESPACE to reflect packages I've designated should be imported in my DESCRIPTION.
@imports package
or@importsFrom package function
,roxygen2
will take care of writing thenamespace
directives. – MurageNAMESPACE
but notDESCRIPTION
– Per@importFrom package function
, not--@importsFrom
.(no s) – LimbusDESCRIPTION
file? So one workflow is to use@imports
in Roxygen2, and then inspect the autogeneratedNAMESPACE
forimports
statements, and manually transcribe the libraries intoImports:
inDESCRIPTION
? – Creech@import dplyr
in the roxygen block of your .R file, then refer to dplyr functions in your code like this:select()
. Option 2 is to put dplyr in theImports:
field of yourDESCRIPTION
, then use::
notation in your R files, like this:dplyr::select
. If you're using the package a lot in a given file, I suggest you use@import
. If you only use it a little, I suggest double colon notation and listing it ONLY inImports:
. – Waterfront