[R] nlme question
Jens_Praestgaard@hgsi.com
Jens_Praestgaard at hgsi.com
Tue Mar 23 17:29:18 CET 2004
I have a need to call and pass arguments to nlme() from within another
function. I use R version 1.8.
I have found an apparent way to make this work, but I would appreciate
some comments on whether this fix is really appropriate, or there is
another way to do it that does not involve changing the source code. I
don't have enough experience to start changing the sorurce code of a
library function.
Calling nlme from within a function as done below will give an error:
testfunc<-
function(dat=v) {
test<-nlsList(result~a+(b-a)/(1+(conc/(c+z*cdiff))^d)
|rep,start=dat$init,data=dat$mixeddat)
return(nlme(test,random=b~1))
}
Here, v is an appropriate data frame in the main workspace.
Inserting two lines in nlme.nlsList will fix it:
Replacing line 21 from bottom "mData<-eval(mData) " by " mData <-
eval(mData,parent.frame())"
Inserting thisCall[["data"]]<-mData on line 4 from bottom before val
<- do.call("nlme.formula", thisCall)
Doing this makes nlme.nlsList recognize the input data of the regression.
But is there a way to do this without changing the source code?
Thank you in advance
More information about the R-help
mailing list