如何在R中的For循环中索​​引对象

时间:2017-07-08 14:10:21

标签: r for-loop

我正在尝试索引“模型”对象,以便我可以选择最适合的模型。我希望看到的结果是:model [i,j]。如果我尝试索引它说: “模型中的错误[i,j]< - glm(newcol~。,data = mod_data [c(mod_tab_new)],:矩阵上的下标数不正确”

这是代码:

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)

感谢您的建议。

1 个答案:

答案 0 :(得分: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个对象填充它。