[R] Trying to understand the magic of lm

Bert Gunter bgunter@4567 @end|ng |rom gm@||@com
Thu May 9 19:39:54 CEST 2019


I don't think previous responses have addressed the question, which appears
to be: "How does R know to look in the "data" object for the variable names
in the formula?" And, of course, I could be wrong -- in which case ignore
all the following.

My answer to that question is: it's quite complicated. I think you have to
know about calls, function closures, evaluation environments, and the
details of model.frame.lm -- and perhaps more. The following **might** be a
start:

> dat <- data.frame(x = 1:10, y = rnorm(10))
>
> ## substitute() is used to return the unevaluated expression for the call
> mc <- match.call(lm, call = substitute(lm(y~x,data = dat)))
> class(mc)
[1] "call"
> as.list(mc)
[[1]]
lm

$formula
y ~ x

$data
dat

Cheers,
Bert Gunter

On Thu, May 9, 2019 at 10:01 AM William Michels via R-help <
r-help using r-project.org> wrote:

> Hello John,
>
> Others have commented on the first half of your question, but the
> second half of your question looks very much like R's built-in
> predict() functions:
>
> >?predict
> >?predict.lm
>
> Best Regards,
>
> Bill.
>
> W. Michels, Ph.D.
>
>
>
> On Wed, May 8, 2019 at 6:23 PM Sorkin, John <jsorkin using som.umaryland.edu>
> wrote:
> >
> > Can someone send me something I can read about passing parameters so I
> can understand how lm manages to have a dataframe passed to it, and use
> columns from the dataframe to set up a regression. I have looked at the
> code for lm and don't understand what I am reading. What I want to do is
> something like the following,
> >
> >
> > myfunction <- function(y,x,dataframe){
> >
> >   fit0 <- lm(y~x,data=dataframe)
> >   print (summary(fit0))
> > }
> >
> > # Run the function using dep and ind as dependent and independent
> variables.
> > mydata <- data.frame(dep=c(1,2,3,4,5),ind=c(1,2,4,5,7))
> > myfunction(dep,ind)
> > # Run the function using outcome and predictor as dependent and
> independent variables.
> > newdata <- data.frame(outcome=c(1,2,3,4,5),predictor=c(1,2,4,5,7))
> > myfunction(outcome,predictor)
> >
> >
> >
> >
> >
> > John David Sorkin M.D., Ph.D.
> > Professor of Medicine
> > Chief, Biostatistics and Informatics
> > University of Maryland School of Medicine Division of Gerontology and
> Geriatric Medicine
> > Baltimore VA Medical Center
> > 10 North Greene Street
> > GRECC (BT/18/GR)
> > Baltimore, MD 21201-1524
> > (Phone) 410-605-7119
> > (Fax) 410-605-7913 (Please call phone number above prior to faxing)
> >
> >
> >         [[alternative HTML version deleted]]
> >
> > ______________________________________________
> > R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> > 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 using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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.
>

	[[alternative HTML version deleted]]



More information about the R-help mailing list