2017-07-08 90 views
0

我在嘗試索引「模型」對象,以便我可以選擇最適合的模型。我想看到的結果是:model [i,j]。如果我試圖指數,它說: 「模型[I,J] <錯誤 - GLM(NEWCOL〜,數據= mod_data [C(mod_tab_new),:矩陣標數量不正確」如何索引For循環中的對象R

這裏代碼:

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

是你想請問這是什麼

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 
} 

總是一個for的循環,前?你打算用數據結構來填充你必須首先定義數據結構的值。在這種情況下,我列出了一個列表並填充了glm對象。

+0

是的,謝謝你的幫助! – New2coding

+0

很高興爲您效勞! –