On Tue, Aug 28, 2012 at 1:29 PM, Sam Steingold <s...@gnu.org> wrote: > At the end of a for loop its variables are still present: > > for (i in 1:10) { > x <- vector(length=100000000) > } > ls() > > will print "i" and "x". > this means that at the end of the for loop body I have to write > > rm(x) > gc() > > is there a more elegant way to handle this?
Wrap the loop in local() scope perhaps? This might get tricky if you need to save some results from the loop, but I think you're ok if they are initialized outside the loop and you use super-assignment. Almost always you shouldn't need manual garbage collection. Something like: # Terribly impractical, but gets the point across y <- numeric(100) local({ for(i in 1:10){ x <- rnorm(10) y[10*(i-1) + 1:10] <<- x } }) print(x) # Error print(y) Doubt that works out to be significantly more elegant however. Michael > > Thanks. > > -- > Sam Steingold (http://sds.podval.org/) on Ubuntu 12.04 (precise) X > 11.0.11103000 > http://www.childpsy.net/ http://camera.org http://palestinefacts.org > http://iris.org.il http://www.PetitionOnline.com/tap12009/ > http://truepeace.org > Computers are like air conditioners: they don't work with open windows! > > ______________________________________________ > 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. ______________________________________________ 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.