[Rd] Defining environments within functions
Giles Hooker
gjh27 at cornell.edu
Thu Aug 28 03:50:58 CEST 2008
How can I define environments within a function so that they are visible
to calls to a sub-function?
I have defined an objective function,
ProfileErr = function(params,...)
which I would like to optimize using standard routines (optim,
nlminb,....) but which contains auxiliary variables which need to be
updated along with params. No optimization routine in R that I have
found has facilities for this.
Specifically, within ProfileErr, I need to calculate
coefs(params,...)
This a function which requires a further optimization, and I can achieve
significant efficiency gains by starting where the last optimization
ended, so I would like to keep track of it.
At the command line, I get around this by
ProfileEnv = new.env()
assign('coefs',coefs,3,ProfileEnv)
and within ProfileErr, I can call
startcoefs = get('coefs',envir=ProfileEnv)
* do the optimization to get newcoefs *
assign('coefs',newcoefs,3,ProfileEnv)
Then calling
optim(pars,ProfileErr,....)
works fine. However, when I try to wrap all of that in its own function
profile.estimate = fn(pars,...){
ProfileEnv = new.env()
assign('coefs',coefs,3,ProfileEnv)
res = optim(pars,ProfileErr,....)
}
ProfileErr no longer sees ProfileEnv. I haven't been able to make much
sense out of the documentation on environments, but is there a way to
make this work? Otherwise I'm back to writing variables out to files.
Many thanks,
Giles
--
Giles Hooker
Assistant Professor:
Department of Biological Statistics and Computational Biology
Department of Statistical Science
1186 Comstock Hall
Cornell University
Ithaca, NY, 14853
Ph: (+1 607) 255 1638
Fax: (+1 607) 255 4698
Email: giles.hooker at cornell.edu
--
Giles Hooker
Assistant Professor:
Department of Biological Statistics and Computational Biology
Department of Statistical Science
1186 Comstock Hall
Cornell University
Ithaca, NY, 14853
Ph: (+1 607) 255 1638
Fax: (+1 607) 255 4698
Email: giles.hooker at cornell.edu
More information about the R-devel
mailing list