On Fri, 15 Aug 2008, Prof Brian Ripley wrote:

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.)

Thanks -- I had forgotten about that (and would still prefer to defer
rewriting ReadItem :-))

luke

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:      [EMAIL PROTECTED]
Iowa City, IA 52242                 WWW:  http://www.stat.uiowa.edu

______________________________________________
R-help@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.




--
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:      [EMAIL PROTECTED]
Iowa City, IA 52242                 WWW:  http://www.stat.uiowa.edu

______________________________________________
R-help@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.

Reply via email to