在循环中创建空间

时间:2019-05-29 12:41:58

标签: r

如果我不知道将要循环的循环数并将结果以某种文件格式保存在文件夹中,如何在for循环中创建空白空间来保存输出?

data<- 
for(i in 1:9){
for(j in 1:5){
   for (b in 1:5){
  for (f in 1:(max(data[,'colum']))) {
model.fit<-lm(y~x)
#again I want to pull out the coefficients and all necessessary values and put them somewhere as matrix or anything else..
I also want to add another model and put the results together
      }
   }
 }
}
write.table ()

1 个答案:

答案 0 :(得分:1)

如注释中所述,您可以初始化list和辅助位置变量aux。对于您的情况,类似于以下内容:

mylist = list()
aux = 1

for(i in 1:9){
    for(j in 1:5){
       for (b in 1:5){
          for (f in 1:(max(data[,'colum']))) {
              mylist[[aux]]<-lm(y~x)
              aux = aux + 1
          }
       }
    }
}
write.table ()

在每次迭代中,都会将模型添加到您的列表中,并将辅助变量更新一个。

修改
如果您希望在每次迭代中添加两个模型,则可以执行以下操作:

mylist = list()
aux = 1

for(i in 1:9){
    for(j in 1:5){
       for (b in 1:5){
          for (f in 1:(max(data[,'colum']))) {
              mylist[[aux]]<-lm(y~x)
              aux = aux + 1
              mylist[[aux]] <- lm2(y~x)
              aux = aux + 1
          }
       }
    }
}
write.table ()

这样,所有奇数数字将具有model.fit偶数数字model.fit1
另一种选择是使用嵌套列表:对于每个步骤,可以如下创建包含model.fitmodel.fit1的子列表:

mylist = list()
aux = 1

for(i in 1:9){
    for(j in 1:5){
       for (b in 1:5){
          for (f in 1:(max(data[,'colum']))) {
              mylist[[aux]]<-list(lm(y~x),lm2(y~x))
              aux = aux + 1
          }
       }
    }
}
write.table ()

然后,对于每一步,您可以通过执行model.fit访问mylist[[aux]][[1]],通过执行model.fit1访问mylist[[aux]][[2]]