[R] clear R-objects inside a function?

Uwe Ligges ligges at statistik.uni-dortmund.de
Tue Apr 10 17:14:22 CEST 2001


Douglas Bates wrote:
> 
> Paul E Johnson <pauljohn at ukans.edu> writes:
> 
> > Using RedHat Linux 7.0, R-1.2.2, R-hdf5-1.2 library,
> >
> > I want to load a dataset, do some stuff with it, then erase its objects,
> > get an other, repeat.  My friend wrote a function which tried to clear
> > away all the objects. At the end, it uses rm() to remove objects. This
> > is the same way we do it interactively, from the R prompt:
> >
> > testLoadSeveralHDF <- function(numFiles) {
> >   for (i in 0:(numFiles-1)) {
> >     filename <- paste("trial",i,".hdf",sep="")
> >     print(filename)
> >     hdf5load(filename)
> >     rm(list = ls(pat="g*"))
> >   }
> > }
> >
> > However, after that program runs, the g* objects are not erased, but
> > typing "rm(list=ls(pat="g*")) from the command line does erase them.  I
> > realized there's something about the environment that I need to tell the
> > function, I just don't know what?
> 
> Add envir = .GlobalEnv to both the ls and the rm calls.  That is
> 
>      rm(list = ls(pat = "g*", envir = .GlobalEnv), envir = .GlobalEnv)

This will remove not only those object, beginning with g*, I think.
Using  pat="g"  will be better, if you don't want to remove all (except
the ".*" ones) of your objects.

Uwe Ligges
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._



More information about the R-help mailing list