Dear Prof. Ripley, Thanks for that.
Just to wrap up the thread, I confirm that my problem is fully fixed in R-patched. Best regards, Keith Jewell ----------- "Prof Brian Ripley" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] > On Fri, 8 Aug 2008, Keith Jewell wrote: > >> Dear Prof. Ripley, >> >> Thank you for your helpful reply. I will download and try R-patched ASAP. >> >> I take your point, I should have tried the latest version (R-patched) >> before >> posting. >> >> With respect to R-patched, would you recommend its use routinely, or only >> in >> investigation of "unexpected behaviour"? > > I use it routinely. > > In this case I was not expecting this to be fixed, but just tried your > example in my usual R-patched (when it worked) and then in 2.7.1 (to > confirm I could reproduce it) -- I then had to figure out what fix also > fixed this one -- as it was > > o nls() was only finding its 'weights' argument in the case when > all the variables in the formula were of the same length and > hence that model.frame() could be used. > > it would have been obvious to no one. Hence the advice to try R-patched > (rather than just read about the changes) can pay off. > >> >> Thanks again, >> >> Keith Jewell >> ------------- >> "Prof Brian Ripley" <[EMAIL PROTECTED]> wrote in message >> news:[EMAIL PROTECTED] >>> Your example works in R-patched, as a consequence of investigations of a >>> different problem. (See the comments in the posting guide about >>> updating >>> your R and trying the very latest versions.) >>> >>> Windows binaries for R-patched are available on CRAN. >>> >>> On Tue, 5 Aug 2008, Keith Jewell wrote: >>> >>>> Hi All, >>>> >>>> I've hit a problem using nls. I think it may be a restriction in the >>>> applicability of nls and I may have found a fix, but I've been wrong >>>> before. >>>> >>>> This example is simplified to the essentials. My real application is >>>> much >>>> more complicated. >>>> >>>> Take a function of matrix 'x' with additional arguments: >>>> matrix 'aMat' whose values are _not_ to be determined by nls >>>> vector 'Coeffs' whose vales _are_ to be determined. >>>> For simplicity, this isn't a selfStart function with an 'initial' >>>> attribute, >>>> but that doesn't change things. >>>> >>>> Myfunc<-function(x, aMat, Coeffs) >>>> { >>>> # >>>> # result = quadratic response in x with >>>> # terms selected by aMat >>>> # >>>> aMat[aMat!=0] <- Coeffs >>>> rowSums((x%*%aMat)%*%t(x)) >>>> } >>>> >>>> If aMat is passed in by name (e.g. aMat = bMat) nls fails. >>>> e.g. >>>> # >>>> # data frame with some noise >>>> DF <- data.frame(x1 = runif(20, 1, 20), x2=runif(20, 1, 20)) >>>> DF$y <- 1 +DF$x1 +DF$x2 +DF$x1*DF$x2 +DF$x1^2 + DF$x2^2 + rnorm(20) >>>> # >>>> # matrix to pass in as aMat >>>> bMat <- matrix(c(1,1,0,0), 2, 2) >>>> # >>>> # and nls fails >>>> nls(y ~ Myfunc(cbind(x1, x2), bMat, aVec), DF, start=list(aVec=c(1,2))) >>>> # >>>> # pass in the same matrix other than by name and it works >>>> nls(y ~ Myfunc(cbind(x1, x2), matrix(c(1,1,0,0), 2, 2), aVec), DF, >>>> start=list(aVec=c(1,2))) >>>> >>>> I think the problem lies in this line in nls >>>> >>>> for (var in varNames[!varIndex]) mf[[var]] <- eval(as.name(var), data, >>>> env) >>>> >>>> This adds values for some named arguments (bMat) as columns of the data >>>> frame. The problem is that generally they don't have the same number of >>>> rows. I've made it work for my example by replacing that line with this >>>> line, which adds values for those arguments to the data frame as >>>> parameters >>>> rather than as a column >>>> >>>> attributes(mf)[["parameters"]] <- >>>> c(attributes(mf)[["parameters"]],lapply(varNames[!varIndex], >>>> function(var) >>>> eval(as.name(var), data, env)) ) >>>> >>>> Problem is, I really don't know nls internals enough to be sure I >>>> haven't >>>> broken something. >>>> And anyway, if this is really an improvement I ought to share it, but >>>> don't >>>> know how. >>>> >>>> Or I could have totally the wrong end of the stick... >>>> >>>> Comments, corrections and advice are welcome. >>>> >>>> Thanks in advance, >>>> >>>> Keith Jewell >>>> ----------------------- >>>>> sessionInfo() >>>> R version 2.7.0 (2008-04-22) >>>> i386-pc-mingw32 >>>> >>>> locale: >>>> LC_COLLATE=English_United Kingdom.1252;LC_CTYPE=English_United >>>> Kingdom.1252;LC_MONETARY=English_United >>>> Kingdom.1252;LC_NUMERIC=C;LC_TIME=English_United Kingdom.1252 >>>> >>>> attached base packages: >>>> [1] stats graphics grDevices datasets tcltk utils methods >>>> base >>>> >>>> other attached packages: >>>> [1] xlsReadWrite_1.3.2 svSocket_0.9-5 svIO_0.9-5 >>>> R2HTML_1.58 >>>> [5] svMisc_0.9-5 svIDE_0.9-5 >>>> >>>> loaded via a namespace (and not attached): >>>> [1] tools_2.7.0 VGAM_0.7-7 >>>> >>>> ______________________________________________ >>>> R-help@r-project.org mailing list >>>> https://stat.ethz.ch/mailman/listinfo/r-help >>>> PLEASE do read the posting guide >>>> http://www.R-project.org/posting-guide.html >>>> and provide commented, minimal, self-contained, reproducible code. >>>> >>> >>> -- >>> Brian D. Ripley, [EMAIL PROTECTED] >>> Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ >>> University of Oxford, Tel: +44 1865 272861 (self) >>> 1 South Parks Road, +44 1865 272866 (PA) >>> Oxford OX1 3TG, UK Fax: +44 1865 272595 >>> >>> ______________________________________________ >>> R-help@r-project.org mailing list >>> https://stat.ethz.ch/mailman/listinfo/r-help >>> PLEASE do read the posting guide >>> http://www.R-project.org/posting-guide.html >>> and provide commented, minimal, self-contained, reproducible code. >>> >> >> ______________________________________________ >> R-help@r-project.org mailing list >> https://stat.ethz.ch/mailman/listinfo/r-help >> PLEASE do read the posting guide >> http://www.R-project.org/posting-guide.html >> and provide commented, minimal, self-contained, reproducible code. >> > > -- > Brian D. Ripley, [EMAIL PROTECTED] > Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ > University of Oxford, Tel: +44 1865 272861 (self) > 1 South Parks Road, +44 1865 272866 (PA) > Oxford OX1 3TG, UK Fax: +44 1865 272595 > > ______________________________________________ > R-help@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. > ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.