Re: [R] update.default evaluating in wrong environment?

From: Gabor Grothendieck <ggrothendieck_at_gmail.com>
Date: Tue 10 Oct 2006 - 17:20:42 GMT

As a workaround use evaluate=FALSE argument to update and evaluate it yourself fetching the environment from the innards of the lm structure:

f <- function() {

   DF <- data.frame(y = 1:12, x1 = gl(2, 1, 12), x2 = gl(2,6))    lm(y ~ x1, DF)
}

f.lm <- f()
e <- attr(terms(f.lm), ".Environment")
eval(update(f.lm, formula = y ~ x2, evaluate = FALSE), e)

On 10/10/06, Martin C. Martin <martin@martincmartin.com> wrote:
> Hi all,
>
> update.default, which is the method used to update "lm" objects (among
> others), extracts the "call" element from it's first argument, updates
> it, then evaluates it in the parent.frame(). Shouldn't it be evaluated
> in environment(formula(object)), if that's non-NULL?
>
> I ask because I call "lm" from within a function, and the data argument
> is a local variable of that function. After that, I can't update the
> model any more, since the new lm() call (the one evaled in
> parent.frame()) can't find the data.
>
> Best,
> Martin
>
> ______________________________________________
> R-help@stat.math.ethz.ch 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@stat.math.ethz.ch 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. Received on Wed Oct 11 03:24:52 2006

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Tue 10 Oct 2006 - 18:30:09 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.