From jmount @end|ng |rom w|n-vector@com  Mon Aug 10 19:42:43 2020
From: jmount @end|ng |rom w|n-vector@com (John Mount)
Date: Mon, 10 Aug 2020 17:42:43 +0000
Subject: [Rd] lm() takes weights from formula environment
In-Reply-To: <509f3b0d-d531-20cd-ea34-bd340d5be3b0@gmail.com>
References: <C57EF170-CC1D-426A-A659-3EA8B198EBC6@win-vector.com>
 <509f3b0d-d531-20cd-ea34-bd340d5be3b0@gmail.com>
Message-ID: <CC3F936D-DA0C-4681-A5F0-1A2C790147D3@win-vector.com>

I wish I had started with "I am disappointed that lm() doesn't continue its search for weights into the calling environment" or "the fact that lm() looks only in the formula environment and data frame for weights doesn't seem consistent with how other values are treated."

But I did not. So I do apologize for both that and for negative tone on my part.


Simplified example:

d <- data.frame(x = 1:3, y = c(1, 2, 1))
w <- c(1, 10, 1)
f <- as.formula(y ~ x)
lm(f, data = d, weights = w)  # works

# fails
environment(f) <- baseenv()
lm(f, data = d, weights = w)
# Error in eval(extras, data, env) : object 'w' not found


> On Aug 9, 2020, at 11:56 AM, Duncan Murdoch <murdoch.duncan at gmail.com> wrote:
> 
> This is fairly clearly documented in ?lm:
> 



[Rd] lm() takes weights from formula environment
John Mount