be careful: using attach in R functions
li dongfeng wrote:
Hi there, I have just found that the ``attach'' function can get you into trouble when called many times. For example, you have a simulation routine called ``f()'', in which you used ``attach'' and no corresponding ``detach''.
Well, attach() may be useful for convenient interactive data analysis. I'd never use it in a simulation, since you can access all objects without attaching anything. (Well, I suggest not to use it at all, at least to our students ... and I'm using it only in very rare cases myself.) Uwe Ligges
Then you call this function many times. You will find that
the system performance get slower and slower,
because you are making the R search path longer and longer.
So be careful when you use attach in a function!
Below is a demonstration of this performance loss,
you will see a linear growth in CPU time usage.
Adding a ``detach()'' call at the end of ``f''
will get rid of this problem.
###############################
f <- function(){
theta <- list(one=2.0, two=0.3, three=0.4)
attach(theta)
x <- c(one, two, three)
sample(x, 1)
}
test <- function(n=400){
timeu <- numeric(n)
for(i in seq(n)){
timeu[i] <-
system.time({
resi <- f()
})[3]
}
plot(timeu)
}
test()
##############################
????????????????Li Dongfeng
????????????????ldf-nospacm at math.pku.edu.cn
????????????????????2004-02-24
______________________________________________ R-help at stat.math.ethz.ch mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html