R中的嵌套循环用于创建矩阵数组

时间:2019-08-23 00:07:31

标签: r for-loop nested

使用以下数据集,我想构成一个3阶(T,T1,T2和T3中的三列)2阶(无行数)乘以11(fu.time的长度)的矩阵的数组。 / p>

.tail

我尝试了以下循环,很遗憾,该循环无法正常工作。

b0=data.frame(b0_1=c(11.41,11.36),b0_2=c(8.767,6.950))
b1=data.frame(b1_1=c(0.8539,0.9565),b1_2=c(-0.03179,0.06752))
b2=data.frame(b2_1=c(-0.013020 ,-0.016540),b2_2=c(-0.0002822,-0.0026720))
T.val=data.frame(T1=c(1,1),T2=c(1,2),T3=c(2,1))
d_data=cbind(b0,b1,b2,T.val)
fu.time=seq(0,1,by=0.1)
pat=ncol(T.val)
nit=2

概念是,如果pt.array=array(NA, dim=c(nit,length(fu.time),pat)) for ( it.er in 1:nit){ for ( ti in 1:length(new.time_2q.RI)){ for (pt in 1:pat){ pt.array[it.er,ti,pt]=b0[T.val[it.er,pt]]+b1[T.val[it.er,pt]]*fu.time[ti]+b2[T.val[it.er,pt]]*fu.time[ti]^2 } } } 取值为T1,那么将取1的第一列。如果b0,b1 and b2中的任何一个取值T,则取2的相应第二列值。

1 个答案:

答案 0 :(得分:0)

以下嵌套循环正在工作。

 pt.array1=array(NA, dim=c(nit,length(fu.time),pat)) 

    for ( it.er in 1:nit){
      for ( ti in 1:length(fu.time)){
        for (pt in 1:pat){
          pt.array1[it.er,ti,pt]=b0[it.er,T.val[it.er,pt]]+b1[it.er,T.val[it.er,pt]]*fu.time[ti]+b2[it.er,T.val[it.er,pt]]*fu.time[ti]^2
        }
      }
    }

如果有的话,也可以选择其他方法。