Подстановка значений матрицы в массив в R

#r

Вопрос:

Я хотел подставить значения матрицы в массив. Рассмотрим следующий код.

 n = 3
irfh = 12 
itrn = 100 
burnin = 15
irf1 = array(0, dim=c(n,irfh,itrn))
lj = matrix(1:36,3,12)
for(i in 1:(itrn burnin)){
  
  if(i > burnin){
   
   irf1[,,i] = lj
  }
}
 

Я пытался выполнить эти коды, но я получаю ошибку, которая —

 Error in `[<-`(`*tmp*`, , , i, value = lj) : subscript out of bounds
 

Может ли кто-нибудь просветить меня, что в этом происходит не так.

Я ценю вашу помощь.

Комментарии:

1. irf1-это массив, lj-матрица, вы не можете вставить матрицу в массив (измерение).

2. @user2974951 Да, это возможно. 3D-массив можно рассматривать как несколько матриц, сложенных вместе.

3. Просто сделай for(i in 1:itrn) это . Протестировано с меньшим массивом и меньшими burnin размерами . Еще лучше, for(i in seq_len(itrn))

4. @RuiBarradas в какой части вы не понимаете роль сжигания? В цикле » для «или в цикле «если»?

5. Это было в for , но в то же время я удалил этот комментарий. Теперь все ясно.

Ответ №1:

Третьим аргументом irf1 должно быть «itrn burnin», потому что в цикле увеличивается с индексом вектора. И добавьте запятую в термине irf1, irf1[,,]. Затем,

 n = 3
irfh = 12 
itrn = 100 
burnin = 15
irf1 = array(0, dim=c(n,irfh,itrn   burnin)) 
lj = matrix(1:36,3,12)

for(i in 1:(itrn burnin)){

  if(i > burnin){

    irf1[,,i] = lj
  } 
}