如何'更新'在R中使用'glm'构建的模型

时间:2013-02-11 20:00:15

标签: r glm

在下面的可重现代码(最后一行)中,如果我将'Income'替换为'fieldToRemove',则'update'功能不起作用。如何使此功能起作用?我需要在循环中运行该行。

state.x77                          
tmpData = as.data.frame(state.x77) 
colnames(tmpData)[4] = "Life.Exp"  
colnames(tmpData)[6] = "HS.Grad"
cnames = colnames(tmpData)
cnames
lenCnames = length(cnames)

rhsOfFormula = paste(cnames[1:(length(cnames)-1)],collapse= "+")
lhsOfFormula = cnames[length(cnames)]
(fmla <- as.formula(paste(lhsOfFormula , " ~ ", rhsOfFormula )) )
modelTmp <- glm(formula = fmla, data=tmpData)

fieldToRemove = 'Income'
newModel <- update(modelTmp, .~.-Income )

1 个答案:

答案 0 :(得分:8)

update期望公式作为第二个参数,因此您必须使用之前使用的相同技巧:as.formula

newModel <- update(modelTmp, as.formula(paste(".~.-", fieldToRemove)) )