R语言中将Matrix值赋值给array时报下标越界错误如何解决
错误原因分析
- 你定义的
irf1数组维度为c(n, irfh, itrn),第三维的长度固定为itrn=100,仅支持下标取值范围为1~100 - 循环变量
i的遍历范围是1:(itrn+burnin)即1115,当`i>burnin`触发赋值逻辑时,`i`的取值为16115,直接用i作为第三维下标时,一旦i>100就会超出数组边界,触发越界报错
修复方案
调整赋值时的第三维下标,将i减去burnin映射到1~100的合法范围即可,修改后代码如下:
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){ # 调整下标,把i的16~115映射到1~100 irf1[,,i - burnin] = lj } }
内容的提问来源于stack exchange,提问作者Shrey_var
相关产品推荐
相关产品推荐

