2017-07-08 22 views
0

「モデル」オブジェクトのインデックスを作成して、直後に最適なモデルを選択できるようにしようとしています。私が見たいのは、model [i、j]です。私は、インデックスにしようとすると、それは言う: "モデルでエラーが発生しました[I、J] <を - GLM行列の添字の(NEWCOLは〜、データ= mod_data [C(mod_tab_new)] ,:数が正しくありません。"Forループでオブジェクトをインデックスする方法

はこちらコード:提案のため

rm(list = ls()) 

mod_data <- NULL 
mod_data$Sex <- sample(0:1, size = 1000, replace = T) 
mod_data$Age <- sample(18:99, size = 1000, replace = T) 
mod_data <- data.frame(mod_data) 

mod_data$newcol <- sample(0:1, size = nrow(mod_data), replace = T) 

mod_headers <- names(mod_data[1:ncol(mod_data)-1]) 

f <- function(mod_headers){ 
    for(i in 1:length(mod_headers)){ 
    tab <- combn(mod_headers,i) 
    for(j in 1:ncol(tab)){ 
     tab_new <- c(tab[,j]) 
     mod_tab_new <- c(tab_new, "newcol") 
     model[i,j] <- glm(newcol ~., data=mod_data[c(mod_tab_new)], family = binomial(link = "logit")) 
    } 
    } 
} 

f(mod_headers) 

おかげ

+0

割り当て前に行列の形状を事前に定義する必要があります。 forループの前に 'model <-matrix(nrow = length(mod_headers)、ncol = ncol(tab))'を追加します。 'tab'の値が最大期待値に設定されている必要がある場合に注意してください。 – Dave2e

答えて

0

は、あなたが望んでいたこの何ですかforループどこの前に必ず

f <- function(mod_headers){ 

model <- list() 


for(i in 1:length(mod_headers)){ 
    tab <- combn(mod_headers,i) 
    model[[i]] <- list() 

     for(j in 1:ncol(tab)){ 

     tab_new <- c(tab[,j]) 
     mod_tab_new <- c(tab_new, "newcol") 
     model[[i]][[j]] <- glm(newcol ~., data=mod_data[c(mod_tab_new)], family = binomial(link = "logit")) 
    } 
    } 

model 
} 

?最初にデータ構造を定義しなければならない値でデータ構造を埋めるつもりです。この場合、私はリストを作成し、 glmオブジェクトでそれを埋めました。

+0

はい、ありがとうございます! – New2coding

+0

これはあなたのために働いてうれしい! –

関連する問題