Создание пространства в цикле - PullRequest
0 голосов
/ 29 мая 2019

Как создать пустое пространство в цикле 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 Ответ

1 голос
/ 29 мая 2019

Как уже упоминалось в комментариях, вы можете инициализировать 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.fit и model.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]].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...