2013-12-18 8 views
0

У меня есть функция, которая выполняется в 200 раз, как этотмагазин массива во время выполнения для цикла

for (l in 1:200) { 
fun.ction(paramter1=g, paramter2=h)$element->u[z,,] 
} 

u является массив:

u<-array(NA, dim=c(2000,150,7)) 

из которых я знаю, он должен иметь правильный формат. Элемент func.tion также представляет собой массив, который имеет те же размеры. Следовательно, есть ли способ заполнить массив u в каждом из 200 прогонов с массивом, полученным из fun.ction()$element? Я попытался использовать индексирование по списку (u[[z]]). Он сохраняет массив, но как список, так что я не могу получить доступ к элементам, которые мне потом понадобятся. Я ценю любую помощь.

+0

Что такое 'z'? Переменная, которую вы используете для индексации for-loop ('l'), вероятно, должна быть тем же самым индексом, который вы используете для заполнения объекта' u'. – Thomas

+4

Я думаю, вы должны использовать 'sapply' вместо цикла' for', но ваш код не [воспроизводимый] (http://stackoverflow.com/a/5963610/1412059). Поэтому мы не можем вам помочь. – Roland

ответ

0

Я не уверен, что это то, что вы хотите, но если вы просто хотите сохранить 200 массивов размеров (2000,150,7) вы можете просто сделать еще один массив с четвертым измерением 200.

storage.array <- array(dim=c(2000,150,7, 200)) 

А затем хранить ваши (2000, 150, 7) массивы в четвертом измерении:

for (i in 1:200){ 
       storage.array[,,,i] <- 
            fun.ction(paramter1=g, paramter2=h)$element} 

Тогда вы можете получить доступ к каждому из массива-го по:

storage.array[,,,i] 

Но я думаю, это будет слишком большой массив для управления R, по крайней мере, на моем компьютере.

Пример, который вы можете легко воспроизвести с небольшими массивами:

storage.array <- array(dim=c(20,2,7, 200)) 

fun.ction <- function(parameter1, parameter2){ 
    array(rnorm(140, parameter1, parameter2), dim=c(20,2,7)) 
} 

for (i in 1:200){ 
    storage.array[,,,i]<- fun.ction(10, 10) 
} 

Но, как Роланд и Томас уже сказал, вы должны сделать ваш код воспроизводимым и правильно определить, что вы хотите, чтобы было легче ответить без пытаясь угадать, какова ваша проблема.

С уважением

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