[R] nls and R scoping rules
Prof Brian Ripley
ripley at stats.ox.ac.uk
Thu Jun 10 12:46:07 CEST 2004
On Thu, 10 Jun 2004, joerg van den hoff wrote:
> Prof Brian Ripley wrote:
>
> >On Thu, 10 Jun 2004, Prof Brian Ripley wrote:
> >
> >
> >
> >>Around R 1.2.x the notion was introduced that variables should be looked
> >>for in the environment of a formula. Functions using model.frame got
> >>converted to do that, but nls did not. I guess that the best way forward
> >>is to ensure that nls (and nlsModel) does search the environment of the
> >>formula for functions.
> >>
> >>
> >
> >It transpires that is rather easy to achieve. At the top of nlsModel and
> >nlsModel.plinear use
> >
> > env <- new.env(parent=environment(form))
> >
> >instead of
> >
> > env <- new.env()
> >
> >This then automatically searches for objects used in the formula
> >
> >Notes
> >
> >1) nls is in a namespace, so you need to fix the copy in the namespace or
> >fix the source code and rebuild.
> >
> >2) This will add to the baggage needed when you save() a nls fit in a
> >workspace. I think that is inevitable as we cannot just identify the
> >funtions used in the formula (as they might call other functions in the
> >local environment), and it is necessary to capture the objects needed to
> >evaluate the formula for the predict() method to be reliable.
> >
> >We could call all.names() to get the names of functions used directly in
> >the formula, but that seems not good enough (previous para).
> >
> >Question to the cognescenti: is the price in 2) too great for this to be
> >done for 1.9.1? I will put the change in R-devel for now.
> >
> >
> >
> thank's a lot for the two responses. that seems exactly what helps me out.
>
> remaining question: how can I edit (I mean from within R, not by messing
> around with the source code directly) an invisible function object such
> as "nlsModel.plinear"?
> help.search('invisible'), help('function'), help('edit') at least did
> not tell me.
It depends why they are hidden, but for functions not exported from a
namespace see ?fixInNamespace (hence my comment about namespaces).
--
Brian D. Ripley, ripley at stats.ox.ac.uk
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
More information about the R-help
mailing list