将对象名称粘贴到R中的glm函数中

时间:2013-08-04 12:26:04

标签: r

我有以下数据

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")

然后我希望使用所有exp.vars作为因变量来应用逻辑模型而不对其进行硬编码(我想将其放入函数中,以便可以尝试不同的exp.vars组合。我的尝试:

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

我怎样才能让它发挥作用?

1 个答案:

答案 0 :(得分:2)

公式中的告诉R使用data.frame data.set(y除外)中的所有变量作为预测变量。这应该这样做:

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

?formula

  

有两种特殊的解释。在公式中。通常的一个   是在模型拟合函数和数据参数的上下文中   表示'公式中没有其他列的所有列':请参阅terms.formula。   仅在update.formula的上下文中,它表示“以前的内容”   在公式的这一部分'。