全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
5516 4
2022-06-13

刚刚开始学习R 不久,在对大矩阵A分块运行的时候遇到这么一个问题,代码运行老是报错,不知道错误出在哪里,以下是程序:
i<-1 #第一行处理
m<-matrix(0,nrow=30,ncol=30)
I<-diag(30)
for (j in 1:31) {
  if (j==i) Int1_<-matrix(0,nrow=30,ncol=1)
  else {
    Aij<-A[(1+30*(i-1)):(30*i),(1+30*(j-1)):(30*j)]
    Ajjn<-solve(I-A[(1+30*(j-1)):(30*j),(1+30*(j-1)):(30*j)])
    Int1_<-Aij%*%Ajjn%*%Y_pro[(1+30*(j-1)):(30*j)]
  }
  Int1_<-as.matrix(Int1_)
  m[,j]<-Int1_
}


运行后报错:
Error in `[<-`(`*tmp*`, , j, value = Int1_) : subscript out of bounds

运行之后有结果,同时也报错了,不知道啥原因,
请问哪位前辈知道哪里出错了嘛?非常感谢
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2022-6-14 05:13:17
你看看是不是你循环那里,j的取值是1:31,那这样的话,m[,31]这个东西是不存在的,所以就超出界限了。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2022-6-17 11:19:27
owenqi 发表于 2022-6-14 05:13
你看看是不是你循环那里,j的取值是1:31,那这样的话,m[,31]这个东西是不存在的,所以就超出界限了。
确实是这样,很常见的超出界限错误
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2022-7-18 20:09:13
jiangbeilu 发表于 2022-6-17 11:19
确实是这样,很常见的超出界限错误
那这种问题要怎么改呢?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2022-7-18 20:09:39
owenqi 发表于 2022-6-14 05:13
你看看是不是你循环那里,j的取值是1:31,那这样的话,m[,31]这个东西是不存在的,所以就超出界限了。
那这种问题要怎么改呢?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群