Re: [R-pkg-devel] referring to a package data object by two names

2017-10-09 Thread Gregory Jefferis
Thanks, Berry. Interesting! Both this suggestion and my previous effort seem a 
little baroque – fighting against the system.

However after thinking about this some more, I found this:

delayedAssign('landmarks', testdataalias::landmarks.2017)

which feels a bit safer (although does not try to automatically find the most 
recent object as per your suggestion).

Thanks again,

Greg.


> On 9 Oct 2017, at 13:36, Berry Boessenkool <berryboessenk...@hotmail.com> 
> wrote:
> 
> 
> Another approach, maybe overkill / not thought through:
> 
> latestLandmark <- function()
>  {
>  files <- dir(file.path(system.file(package="yourpackage"), "data"), 
>   pattern="landmark", full.names=TRUE)
>  env <- environment()
>  dataset <- load(tail(files, 1), envir=env)
>  return(invisible(get(dataset, envir=env)))
>  }
> 
> landmark <- latestLandmark()
> 
> 
> Regards,
> Berry
> 
> 
> From: R-package-devel <r-package-devel-boun...@r-project.org 
> <mailto:r-package-devel-boun...@r-project.org>> on behalf of Gregory Jefferis 
> <jeffe...@gmail.com <mailto:jeffe...@gmail.com>>
> Sent: Sunday, October 8, 2017 14:45
> To: Michael Dewey
> Cc: r-package-devel@r-project.org <mailto:r-package-devel@r-project.org>
> Subject: Re: [R-pkg-devel] referring to a package data object by two names
>  
> Dear Michael,
> 
> Many thanks for writing.
> 
> > Do any of the suggestions in section 1.5.3 of Writing R Extensions "Load 
> > hooks" work?
> 
> I thought I had tried all the various permutations in .onLoad but at your 
> prompting I tried some more and this seems to work:
> 
> .onLoad <- function (libname, pkgname) {
>   # set up default landmarks object
>   assign('landmarks',
>  envir = parent.env(environment()),
>  testdataalias::landmarks.2017)
> 
> }
> 
> It doesn't seem to tickle R CMD check, but I'm not yet convinced that it is 
> 100% safe. Any comments either way are welcome!
> 
> Best wishes,
> 
> Greg.
> 
> __
> R-package-devel@r-project.org <mailto:R-package-devel@r-project.org> mailing 
> list
> https://stat.ethz.ch/mailman/listinfo/r-package-devel 
> <https://stat.ethz.ch/mailman/listinfo/r-package-devel>
--
Gregory Jefferis, PhD
Division of Neurobiology
MRC Laboratory of Molecular Biology
Francis Crick Avenue
Cambridge Biomedical Campus
Cambridge, CB2 OQH, UK

http://www2.mrc-lmb.cam.ac.uk/group-leaders/h-to-m/g-jefferis
http://jefferislab.org
http://www.zoo.cam.ac.uk/departments/connectomics




[[alternative HTML version deleted]]

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

Re: [R-pkg-devel] referring to a package data object by two names

2017-10-08 Thread Gregory Jefferis
Dear Michael,

Many thanks for writing.

> Do any of the suggestions in section 1.5.3 of Writing R Extensions "Load 
> hooks" work?

I thought I had tried all the various permutations in .onLoad but at your 
prompting I tried some more and this seems to work:

.onLoad <- function (libname, pkgname) {
  # set up default landmarks object
  assign('landmarks',
 envir = parent.env(environment()),
 testdataalias::landmarks.2017)

}

It doesn't seem to tickle R CMD check, but I'm not yet convinced that it is 
100% safe. Any comments either way are welcome!

Best wishes,

Greg.

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


Re: [R-pkg-devel] referring to a package data object by two names

2017-10-08 Thread Michael Dewey

Dear Greg

Do any of the suggestions in section 1.5.3 of Writing R Extensions "Load 
hooks" work?


Michael

On 08/10/2017 08:40, Gregory Jefferis wrote:

Dear R colleagues,

I have a set of versioned data objects in a package. Let's call them

landmarks.2016
landmarks.2017

I need to have access to both of these objects for different calculations both 
internal to the package and for end users. The objects are saved as rda files 
in the package's data folder.

I would also like to define an object – an alias if you will – that contains 
the *current* landmarks. This is useful so that some package functions and 
external scripts do not require editing when the default object changes.

For this, somewhere in the package, I would like to do something like:

# set the current default landmarks
landmarks <- landmarks.2017

I cannot figure out a place to do this in my package because check always 
complaints that landmarks.2017 does not exist – I guess lazy loading can only 
happen after all the R code is evaluated.

* Can anyone suggest a workaround that does not involve saving a third 
redundant rda object into the package's data folder?

I have placed a toy example package on GitHub:

   https://github.com/jefferis/testdataalias

With many thanks,

Greg Jefferis.

--
Gregory Jefferis, PhD
Division of Neurobiology
MRC Laboratory of Molecular Biology
Francis Crick Avenue
Cambridge Biomedical Campus
Cambridge, CB2 OQH, UK

http://www2.mrc-lmb.cam.ac.uk/group-leaders/h-to-m/g-jefferis
http://jefferislab.org
http://www.zoo.cam.ac.uk/departments/connectomics

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

---
This email has been checked for viruses by AVG.
http://www.avg.com



--
Michael
http://www.dewey.myzen.co.uk/home.html

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