[R] Saving environment object
Prof Brian Ripley
ripley at stats.ox.ac.uk
Fri Aug 15 18:08:10 CEST 2008
Having been told that this was a particular very large environment, Luke's
comments in serialize.c wouild seem to apply:
The output format for dotted pairs writes the ATTRIB value first
rather than last. This allows CDR's to be processed by iterative
tail calls to avoid recursion stack overflows when processing long
lists. The writing code does take advantage of this, but the
reading code does not. It hasn't been a big issue so far--the only
case where it has come up is in saving a large unhashed environment
where saving succeeds but loading fails because the PROTECT stack
overflows. With the ability to create hashed environments at the
user level this is likely to be even less of an issue now. But if
we do need to deal with it we can do so without a change in the
serialization format--just rewrite ReadItem to pass the place to
store the CDR it reads. (It's a bit of a pain to do, that is why it
is being deferred until it is clearly needed.)
So I think the moral is to hash large environments, and increasing
--max-ppsize should enable this one to be read in.
On Fri, 15 Aug 2008, Luke Tierney wrote:
> On Fri, 15 Aug 2008, Benjamin Otto wrote:
>
>> Hi,
>>
>> When I create an environment object with new.env() and populate it with
>> values then how can I save it into an .RData file properly, so it can be
>> loaded later on in a new session?
>>
>> Saving an environment object with save() or save.image() results in an
>> error
>> message when loading again:
>>
>> Error: protect(): protection stack overflow
>
> save/load works fine (and is used in many places):
>
>> e<-new.env()
>> assign("e", e, envir = e)
>> assign("x", 2, envir = e)
>> save(e, file = "test.Rda")
>> rm(e)
>> load("test.Rda")
>> e
> <environment: 0x1c2c748>
>
> There may be something about the values you are using that is causing
> problems, but there is no way to tell without a reproducible example.
>
> luke
>
>>
>> Regards,
>>
>> benjamin
>>
>> ======================================
>> Benjamin Otto
>> University Hospital Hamburg-Eppendorf
>> Institute For Clinical Chemistry
>> Martinistr. 52
>> D-20246 Hamburg
>>
>> Tel.: +49 40 42803 1908
>> Fax.: +49 40 42803 4971
>> ======================================
>>
>>
>>
>>
>
> --
> Luke Tierney
> Chair, Statistics and Actuarial Science
> Ralph E. Wareham Professor of Mathematical Sciences
> University of Iowa Phone: 319-335-3386
> Department of Statistics and Fax: 319-335-3017
> Actuarial Science
> 241 Schaeffer Hall email: luke at stat.uiowa.edu
> Iowa City, IA 52242 WWW: http://www.stat.uiowa.edu
>
> ______________________________________________
> 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.
>
--
Brian D. Ripley, ripley at stats.ox.ac.uk
Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
University of Oxford, Tel: +44 1865 272861 (self)
1 South Parks Road, +44 1865 272866 (PA)
Oxford OX1 3TG, UK Fax: +44 1865 272595
More information about the R-help
mailing list