列表中的“多个”索引元素

时间:2016-09-17 23:42:07

标签: r list matrix

我正在编写一个带有三个循环的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]]:下标超出界限时出错。

我怎样才能解决这个问题,还是有其他方法可以在这样的列表中“多重”索引矩阵?

提前致谢。

1 个答案:

答案 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)] 
        }
    }
}