[R] Trying to understand the magic of lm

Rui Barradas ru|pb@rr@d@@ @end|ng |rom @@po@pt
Thu May 9 11:37:32 CEST 2019


Hello,

There is a "standard" deparse/substitute trick that gets the names of 
the variables passed to a function. There are more sophisticated ways 
but maybe that is what you are looking for.


myfunction <- function(y, x, dataframe){
   y <- deparse(substitute(y))
   x <- deparse(substitute(x))
   fmla <- as.formula(paste(y, '~', x))
   fit0 <- lm(fmla, data = dataframe)
   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, mydata)

# 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, newdata)


Note: your function has an argument 'dataframe' that you didn't use in 
any of the two calls.


Hope this helps,

Rui Barradas

Às 02:22 de 09/05/19, Sorkin, John escreveu:
> 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.
>



More information about the R-help mailing list