#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
}
}