[R] Persistent storage between package invocations

Henrik Bengtsson hb at biostat.ucsf.edu
Fri Mar 18 08:52:38 CET 2011


On Wed, Mar 16, 2011 at 6:00 AM, Hadley Wickham <hadley at rice.edu> wrote:
>> No.  First, please use path.expand("~") for this, and it does not
>> necessarily mean the home directory (and in principle it might not expand at
>> all).  In practice I think it will always be *a* home directory, but on
>> Windows there may be more than one (and watch out for local/roaming profile
>> differences).
>
> Ok - I did remember that something like path.expand existed, I just
> couldn't find it.  (And I always get confused by the difference
> between normalizePath and path.expand).
>
>> Second, it need not be writeable, and so many package authors write rubbish
>> in my home directory that I usually arrange it not be writeable to R test
>> processes.
>
> So at a minimum I need to check if the "home" directory is writeable,
> and fail gracefully if not.
>
> What about using the registry on windows?  Does R provide any
> convenience functions for adding/accessing entries?
>
>> If you want something writeable across processes, use dirname(tempdir()) .
>
> I was really looking for options to be persistent between instances -
> i.e. so you decide once, and not need to be asked again. In a similar
> way, it would be nice if you could choose a CRAN mirror once and then
> not be asked again - and not need to know anything about how to set
> options during startup.

To add more of my noise:

When you want to define "persistent package settings" you also have to
consider which should be "user specific" and which should be
"project/directory specific" (we also have "site-wide" settings shared
by many users and session-only settings).  For instance, we have
.Rprofile and .Renviron that are/can be user specific, whereas
.Rhistory and .RData often being considered to be project specific,
which in practice means stored in the current directory.  Some
settings can easily be identified to be one or the other, but some are
more in the grey zone.  For those, should the project specific
settings override the user specific ones?  How and where should you
store them so that you it is clear how to separate and so on.   These
are questions that have held me back on finding a solution for
persistent settings.  For instance, I've been thinking of having
options() to be automatically (and immediately) stored persistently,
but where, how and when/when not?  ...not to talk about how to handle
race conditions if you run multiple sessions.

My $.02

/Henrik

>
> Hadley
>
> --
> Assistant Professor / Dobelman Family Junior Chair
> Department of Statistics / Rice University
> http://had.co.nz/
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>



More information about the R-help mailing list