[Rd] how to control the environment of a formula

Thomas Alexander Gerds tag at biostat.ku.dk
Fri Apr 19 20:57:22 CEST 2013


hmm. I have tested a bit more, and found this perhaps more difficult
solve situation. even though I delete x, since x is part of the output
of the formula, the size of the object is twice as much as it should be:

test <- function(x){
  x <- rnorm(1000000)
  out <- list(x=x)
  rm(x)
  out$f <- as.formula(a~b)
  out
}
v <- test(1)
x <- rnorm(1000000)
save(v,file="~/tmp/v.rda")
save(x,file="~/tmp/x.rda")
system("ls -lah ~/tmp/*.rda")

-rw-rw-r-- 1 tag tag  15M Apr 19 20:52 /home/tag/tmp/v.rda
-rw-rw-r-- 1 tag tag 7,4M Apr 19 20:52 /home/tag/tmp/x.rda

can you solve this as well?

thanks!
thomas

Duncan Murdoch <murdoch.duncan at gmail.com> writes:

> On 13-04-18 11:39 AM, Thomas Alexander Gerds wrote:
>> Dear Duncan
>> thank you for taking the time to answer my questions! It will be
>> quite some work to delete all the objects generated inside the
>> function ... but if there is no other way to avoid a large
>> environment then this is what I will do.
>
> It's not really that hard.  Use names <- ls() in the function to get a
> list of all of them; remove the names of variables that might be
> needed in the formula (and the name of the formula itself); then use
> rm(list=names) to delete everything else just before returning it.
>
> Duncan Murdoch
>
-- 
Thomas A. Gerds -- Assoc. Prof. Department of Biostatistics Copenhagen
University of Copenhagen, Oester Farimagsgade 5, 1014 Copenhagen, Denmark



More information about the R-devel mailing list