使用以下数据集,我想构成一个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
的相应第二列值。
答案 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
}
}
}
如果有的话,也可以选择其他方法。