2017-01-04 6 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私は一度に各列名をループして、それを後退させます。内部的には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 
関連する問題