Colin, you can do:

Imports: tools

NAMESPACE:
if (getRversion() >= 4) importFrom(tools,R_user_dir)


R/000.namespace.R:
## Create a dummy R_user_dir() for R (< 4.0.0)
## to please R CMD check
if (getRversion() < 4) {
  R_user_dir <- function(...) NULL
}

and then use:

if (getRversion() < 4) {
  # do something
} else {
  R_user_dir("oysteR", which = "cache")
}

An advantage of this approach is that it's clear from Imports: and the
NAMESPACE file what you're importing and when.  When using Suggests:
and pkg::fcn() you can't peek at NAMESPACE to see what's actually
used.


Finally, if '#do something' is basically trying to do the same as
tools::R_user_dir(), you could of course also consider writing your
own forward-compatible wrapper for R (< 4.0.0), e.g.

if (getRversion() < 4) {
  R_user_dir <- function(...) {
    # do something
   }
}

and then use R_user_dir() as if you're running R (>= 4.0.0).  That's
the cleanest version.

Hope this helps,

Henrik


On Wed, Dec 16, 2020 at 11:12 AM Jeff Newmiller
<jdnew...@dcn.davis.ca.us> wrote:
>
> For "obvious" reasons? I don't see this kind of avoidance as "obviously" 
> correct at all. You have a dependency... it should be declared. There are 
> various ways to proceed, with Imports or Depends or Suggests or pulling the 
> code into your package... but trying to subvert the dependency management is 
> counterproductive.
>
> On December 16, 2020 8:28:15 AM PST, Colin Gillespie <csgilles...@gmail.com> 
> wrote:
> >Hi,
> >
> >I'm planning on using the tools::R_user_dir function in a package. But
> >for obvious reasons, I don't want to set the dependency on R 4.
> >
> >My code is basically
> >
> >if (as.numeric(R.version$major) < 4) # do something
> >else tools::R_user_dir("oysteR", which = "cache")
> >
> >When checking on win-builder R3.6 I get the note
> >
> >* checking dependencies in R code ... NOTE
> >Missing or unexported object: 'tools::R_user_dir'
> >
> >## Question
> >
> >Is my code correct and can I ignore this note?
> >
> >Thanks
> >
> >Colin
> >
> >
> >Dr Colin Gillespie
> >http://www.mas.ncl.ac.uk/~ncsg3/
> >
> >______________________________________________
> >R-package-devel@r-project.org mailing list
> >https://stat.ethz.ch/mailman/listinfo/r-package-devel
>
> --
> Sent from my phone. Please excuse my brevity.
>
> ______________________________________________
> R-package-devel@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-package-devel

______________________________________________
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel

Reply via email to