BTW, 'backports' provides a backport for tools::R_user_dir() also for
R (< 4.0.0), so an alternative solution in this case is:

Imports: backports

and

importFrom(backports, R_user_dir)

The 'backports' package takes the same approach as I did in my previous message.

Henrik

On Wed, Dec 16, 2020 at 12:27 PM Henrik Bengtsson
<henrik.bengts...@gmail.com> wrote:
>
> 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