[Rd] bugfix for nls with port algorithm (PR#13540)

Manuel.A.Morales at williams.edu Manuel.A.Morales at williams.edu
Thu Feb 19 20:55:13 CET 2009


Full_Name: Manuel A. Morales
Version: 2.8.1
OS: Linux
Submission from: (NULL) (137.165.199.246)


When fitting a model in nls using the algorithm port with constraints and the
shorthand parameter[factor] in the model, I get the following error message:

"Error in nls_port_fit(m, start, lower, upper, control, trace) : 
  (list) object cannot be coerced to type 'double'
In addition: Warning message:
In start < low :
  longer object length is not a multiple of shorter object length"

This error can be fixed by changing line 423 in nls.R from:

if(any(start < low || start > upp)) {

to:

if(any(unlist(start) < low || unlist(start) > upp)) {

The following code will generate the error:
x = runif(200)
b0 = c(rep(0,100),runif(100))
b1 = 1
fac <- as.factor(rep(c(0,1), each=100))
y = b0+b1*x+rnorm(200,sd=0.05)
nls(y~b0[fac]+b1*x, start=list(b0=c(1,1),b1=1), algorithm="port",
    upper=c(100,100,100))

Manuel



More information about the R-devel mailing list