嵌套循环中的R,用于创建矩阵的阵列(Nested Loop in R for creating ar

2019-10-30 14:14发布

用下面的数据集,我想通过11(fu.time的长度),以使图3(T中三列,T1,T2和T3)的顺序2矩阵(没有行的)的阵列。

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

我试过follwoing环,遗憾的是它不工作。

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则相应的第二列的值b0,b1, and b2采取。

Answer 1:

继嵌套循环是否正常。

 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
        }
      }
    }

如果任何的替代方法表示赞赏。



文章来源: Nested Loop in R for creating arrays of matrices