在R中带for循环的四维数组

时间:2018-07-19 21:25:57

标签: r for-loop multidimensional-array

我一直试图将我的多个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的组合。

任何想法如何做到这一点? 非常感谢你!

0 个答案:

没有答案