简体   繁体   中英

Pasting object names into the glm function in R

I have the following data

data.set <- data.frame("varA"=rnorm(50),"varB"=rnorm(50),
                       "varC"=rnorm(50), binary.outcome=sample(c(0,1),50,replace=T) )

exp.vars <- c("varA","varB","varC")

I then wish to apply a logistic model using all of the exp.vars as dependent variables without hard coding them (I want to put this into a function so that different combinations of exp.vars can be tried. My attempt:

results <- glm( binary.outcome ~ get(paste(exp.vars, collapse="+")), family=binomial, 
                        data=data.set )

How can I get this to work?

The . in the formula tells R to use all variables in the data.frame data.set (except y) as predictors. This should do it:

glm( binary.outcome ~ ., family=binomial, 
                data=data.set )

Call:  glm(formula = binary.outcome ~ ., family = binomial, data = data.set)

Coefficients:
(Intercept)         varA         varB         varC  
    -0.4820       0.1878      -0.3974      -0.4566  

Degrees of Freedom: 49 Total (i.e. Null);  46 Residual
Null Deviance:      66.41 
Residual Deviance: 62.06    AIC: 70.06

and from ?formula

There are two special interpretations of . in a formula. The usual one is in the context of a data argument of model fitting functions and means 'all columns not otherwise in the formula': see terms.formula. In the context of update.formula, only, it means 'what was previously in this part of the formula'.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM