我正在编写一个带有三个循环的R代码来生成大量矩阵,我希望存储所有这些矩阵。任务是每200个大矩阵,每次从左到右,从上到下采用10×10子矩阵。所有这些尺寸(10 * 10)的(200 * 790 * 790)矩阵都是我想要的。以下是我已经完成的工作:
# Define an empty list to store all submatrices
sub.matrix = list()
# for loop to generate and store all submatrices
for(i in 1:200){
for(j in 1:790){
for(k in 1:790){
sub.matrix[[i]][[j]][[k]] = main.matrix[[i]][j:(j+10), k:(k+10)] # QUESTION STARTS AT THE BEGINNING OF THIS LINE.
}
}
}
所以主要问题是如何有效地索引子矩阵。我虽然它应该如上“[[i]] [[j]] [[k]]”,但计算机告诉我错误
*tmp*
[[j]]:下标超出界限时出错。
我怎样才能解决这个问题,还是有其他方法可以在这样的列表中“多重”索引矩阵?
提前致谢。
答案 0 :(得分:0)
您需要初始化sub.matrix
,然后才能将其编入索引:
x <- list()
x[[1]]
x [[1]]中的错误:下标超出界限
当您尝试索引空列表时会发生错误,请尝试以下操作(但我怀疑您的计算机是否有足够的内存来容纳该对象):
sub.matrix = vector(mode = "list", length = 200)
for(i in 1:200){
sub.matrix[[i]] = vector(mode = "list", length = 790)
for(j in 1:790){
sub.matrix[[i]][[j]] = vector(mode = "list", length = 790)
for(k in 1:790){
sub.matrix[[i]][[j]][[k]] = main.matrix[[i]][j:(j+10), k:(k+10)]
}
}
}