2013-02-11 56 views
2

在下面的重複代碼(最後一行)中,如果用'fieldToRemove'替換'收入','更新'功能不起作用。我如何使這個功能起作用?我需要在循環中運行該行。如何'更新'使用'glm'構建的模型R

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) 

回答

8

update需要一個公式作爲第二個參數,所以你必須使用你之前使用同樣的伎倆:as.formula

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

感謝,擔任所需 – user1140126 2013-02-11 20:15:56