2017-01-04 40 views
0

我想在數據框中的每個變量上運行一批迴歸,然後隨着循環的進行將每個迴歸的殘差偏差值存儲在新的向量中。循環遍歷迴歸中的列名稱

該框架被稱爲「cw」。前幾個變量只是元數據,所以忽略它們。我嘗試以下方法:

deviances<-c() 
for (x in colnames(cw)[1:8]){deviances[x]<-NA} 
for (x in colnames(cw)[8:27]){ 
    model<-glm(cwonset ~ x, fmaily = binomial, data = cw) 
    append(deviances, model$deviance) 
} 

然而,它給人的錯誤:

Error in model.frame.default(formula = cwonset ~ x, data = cw, drop.unused.levels = TRUE) : 
    variable lengths differ (found for 'x') 

任何想法,爲什麼?

+2

做一個可重複的例子。這會幫助我們回答這個問題。 http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example – boshek

+0

我完全同意@ boshek –

回答

2

沒有數據,我不得不依靠mtcars來幫助你,也不需要for循環。我假設mpg作爲因變量

邏輯:sapply幫助我一次遍歷每個colname,然後我只是迴歸它。它在內部是for循環雖然

sapply(colnames(mtcars[-1]), function(x) { 
             form <- as.formula(paste0("mpg~", x)) 
             model <- glm(form, data = mtcars) 
             model$deviance}) 
#  cyl  disp  hp  drat  wt  qsec  vs  am  gear  carb 
# 308.3342 317.1587 447.6743 603.5667 278.3219 928.6553 629.5193 720.8966 866.2980 784.2711