我一直试图将我的多个for循环迭代的输出存储在一个四维数组中。对于相同的情况,我能够对三维数组执行此操作,但随后必须针对i和j值的每种组合反复进行for循环(请参见下文)。由于存在大量数据,我现在想优化代码以在一次运行后存储所有i和j值组合的结果,但是我不知道该怎么做。
RESULTS1=array(0,dim=c(3,3,40,9 ))
第4维的值为9,因为这是j和i(i * j)的所有组合的数量(请参见主代码位)
使用这一行代码,我可以创建一个空的四维数组,下面是它的样子的子集
, , 1, 1
[,1] [,2] [,3]
[1,] 0 0 0
[2,] 0 0 0
[3,] 0 0 0
, , 2, 1
[,1] [,2] [,3]
[1,] 0 0 0
[2,] 0 0 0
[3,] 0 0 0
带有for循环的代码,我正在尝试填充该数组:
for(i in c(200, 300, 400)){
for(j in c(0, 100, 200)){
M.sub<-subset(Markov.time, East>=i&East<=(i+99.9)&North>=j
&North<=(j+99.9))
if(length(M.sub[,1])>1){
for(x in 4:43){
time.dep<-M.sub[,c(x,x+1)]
RESULTS1[,,(x-3), c(i,j)]<-apply(apply(time.dep,1,FUN = (MC_Matrix)),1,sum)}
}}}
我的主要问题是我不知道该写RESULTS1[,,(x-3), c(i,j)]
中第四维的下标是什么,因为它是i和j的组合。
任何想法如何做到这一点? 非常感谢你!