在回归中循环列名称

时间:2017-01-04 17:01:42

标签: r

我希望对数据框中的每个变量运行一整套回归,然后在循环过程中将每个回归的残差偏差值存储在新向量中。

该帧称为“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')

知道为什么吗?

1 个答案:

答案 0 :(得分: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