A colleague of mine is trying to use nls() to effect an optimization, and is encountering a scoping problem. I should know how to solve it for him but .... well, I just don't.
I also had a quick scrounge of the archives --- I know I've seen this topic addressed before --- but I couldn't track it down. So here's a toy example that demonstrates the problem: hhh <- function(y,x) { g <- function(a,b,x) {1/(1+a^2 + b^2*exp(x))} nls(y~g(a,b,x),data=data.frame(x=x,y=y)) } set.seed(123) x <- runif(50,1,10) y <- 1/(1+16 + 36*exp(x)) + rnorm(50,0,0.1) hhh(y,x) which results in an error Error in get(x, envir, mode, inherits) : variable "g" was not found So can one assign the function ``g'' somewhere where it **can** be found? I.e. use something like assign("g",g,envir=??????) Or is there some other magic incantation that can be used here to get nls to deal with a ``g'' defined inside the function which call nsl()? In the real problem the function g is a complicated gadget, taking different forms in different parts of its domain, so it is inconvenient-to-impossible to specify it explicitly in the formula in the call to nls(). Thanks for any help you can give. cheers, Rolf Turner [EMAIL PROTECTED] ______________________________________________ [EMAIL PROTECTED] mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html