2017-07-08 95 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

很高兴为您效劳! –