[Rd] how to store package options over sessions?

Spencer Graves spencer.graves at structuremonitoring.com
Sat Nov 20 19:42:32 CET 2010


       If you want the information to be kept within a specific working 
directory, and forgotten when the user changes the working directory, 
then you can store the results in getwd() using something like the 
following:


             save(object1toSave, object2toSave, ..., 
file="MyPackageName_saveFile.rda")


When the package is loaded, e.g., library(MyPackageName), you can use 
something like the following to restore it:


             if(length(grep("MyPackageName_saveFile.rda", 
dir()))>0)load("MyPackageName_saveFile.rda")


       I haven't tried it, but it looks like it should work AND be 
platform independent (AND would not require SQLite).


       Dirk's solution seems better if you do NOT want the saved 
information to be lost when the user executes library(MyPackageName) 
within a different working directory.


       Hope this helps.
       Spencer


On 11/20/2010 9:51 AM, Dirk Eddelbuettel wrote:
> On 20 November 2010 at 17:12, Mark Heckmann wrote:
> | Hi,
> | I posted this a week ago on r-help but did not get an answer. So I hope that someone here can help me:
> | I want to define some options for my package the user may change.
> | It would be convenient if the changes could be saved when terminating
> | an R session and recovered automatically on the next package load.
> |
> | Is that possible and if yes, is the standard way to implement this?
>
> First off:
>
>     R>  fortunes:::fortune("yoda")
>
>     Evelyn Hall: I would like to know how (if) I can extract some of the
>     information from the summary of my nlme.
>     Simon Blomberg: This is R. There is no if. Only how.
>        -- Evelyn Hall and Simon 'Yoda' Blomberg
>           R-help (April 2005)
>
>     R>
>
> Secondly, what you ask is necessarily rather OS-dependent. So of course it
> can be done, but probably in way that depend on your local circumstance.
>
> Thirdly, and to make this a little more helpful, I frequently use the RSQLite
> package to cache data across sessions and invocations. For a large example,
> consider the CRANberries feed (http://dirk.eddelbuettel.com/cranberries/)
> which stores in SQLite what the the state of the (CRAN) world was the last it
> got woken up by crontab.  I also have a few smaller ad-hoc things at work
> that do similar things.
>
> Depending on your local circumstances you may make this 'cache' of stateful
> information read or read/write, make it a file on NFS or CIFS or WebDAV, make
> it a database that can be read as file or over sockets and so.
>
> And Yoda still rules.
>
> Dirk
>


-- 
Spencer Graves, PE, PhD
President and Chief Operating Officer
Structure Inspection and Monitoring, Inc.
751 Emerson Ct.
San José, CA 95126
ph:  408-655-4567



More information about the R-devel mailing list