2015-05-15 7 views
0

Я новичок в R, и я хотел бы, чтобы спасти из ставит после циклаR программирование: сохранение трехмерных выходов после цикла

for (i in 1:5) { 
    for (d in 1:10) { 
    fonction1 
    fonction2 
    fonction3 
    } 
    } 

В конце я хотел бы иметь 1 list-> содержит 5 list-> содержит 1 * 10 кадров данных -> содержит определенное число * 3 числовых данных. (Я не знаю, правильно ли я говорю это, что я хочу иметь: как в Matlab, есть структура 1 * 5 -> содержит пять структур 1 * 10 -> содержит определенное число * 3 числовых данных).

заранее спасибо

+1

Я думаю, вам нужно создать список. то есть 'lst <- vector ('list', 5)', а затем назначить вывод на 'lst [[i]]' Без воспроизводимого примера нелегко помочь – akrun

ответ

0

Похоже, вы ухаживаете за что-то вроде следующего:

out <- list() 
for (i in 1:5) { 
    outList <- list() 
    for (d in 1:10) { 
    outVect <- c() 
    outVect[1] <- fonction1() 
    outVect[2] <- fonction2() 
    outVect[3] <- fonction3() 
    outList[[d]] <- outVect 
    } 
    out[[i]] <- outList 
    } 

Тогда вы можете посмотреть по адресу:

str(out) 

видеть структуру вашего ответа

+0

Эй! Он отлично работает! большое спасибо: D –

+0

Отлично. Не забудьте указать ответ на свою проблему как тот, который вы выбрали, щелкнув галочку в левой части ответа, чтобы люди увидели, что ваша проблема решена. И если вам нравится ответ, вы всегда можете нажать на стрелку вверх, чтобы дать ему кредит. – cmbarbu

0

Попробуйте следующее:

lst <- lapply(1:5, function(i) { 
    lapply(1:10, function(d) { 
    data.frame(function1(), 
       function2(), 
       function3()) 
    }) 
}) 

Предполагая function1, function2 и function3 возвращают векторы одинаковой длиной, приведенный выше код должен производить нужный объект. Вы можете использовать i и d так же, как если бы вы использовали их в коде цикла for.

Смежные вопросы