# [R] nls question

Chong Gu chong at stat.purdue.edu
Fri Apr 27 17:21:18 CEST 2001

```   On Fri, 27 Apr 2001, Bill Simpson wrote:

> I have a question about passing arguments to the function f that nlm
> minimizes.
>
> I have no problems if I do this:
> x<-seq(0,1,.1)
> y<-1.1*x + (1-1.1) + rnorm(length(x),0,.1)
> fn<-function(p)
> 	{
> 	yhat<-p*x+(1-p)
> 	sum((y-yhat)^2)
> 	}
> out<-nlm(fn,p=1.5,hessian=TRUE)
>
> But I would like to define
> fn<-function(x,y,p)
>         {
>         yhat<-p*x+(1-p)
>         sum((y-yhat)^2)
>         }
> so that I can pass the x and y variables along, doing something like
> out<-nlm(fn,x=this, y=that,p=1.5,hessian=TRUE)
> This version doesn't work of course. I have looked at the examples and
> can't figure out how to do what I want. Is it possible?
>
> Thanks very much for any help.
>
> (BTW I know nls() can be used for nonlinear least squares fitting. It
> choked on this problem.)
>
> Bill Simpson
>
> -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
> 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
> _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
>

I had to do similar things within a function and this is how I do it:

{
...
y <- ...
p <- ...
fn <- function(x) {
yhat<-p*x+(1-p)
assign("y",y+1,inherit=TRUE)
sum((y-yhat)^2)
}
nlm(fn,x)
...
}

When R needs y and p within fn, it'll trace through the nested
environments to find them, and since they are not within nlm, the y and p
in task gets used; they can also be provided through the arguments of

The assign(...) line allows me to update y from within fn.  My
particular application involves a certain Newton iteration within fn,
and I have to update the starting value for that Newton iteration.

Hope this helps.

Chong
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
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
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._

```