我翻遍了列表档案,要么我不知道问这个问题的正确词,要么以前没有出现过——
我有一个模拟功能,我可以在其中跟踪一段时间内的点列表,并希望根据分配引入额外的滞后计算。我创建了一段非常简单的代码来了解 R 如何填充矩阵:
t<-21 #time step
N<-10 #points to track
#creating a matrix where it's easy for me to see how the calculation is done
NEE<-rep(NA, (t+1)*N);dim(NEE)<-c(N,(t+1))
for(i in 1:t){
NEE[,1]<-1
NEE[,i+1]<-NEE[,i]+5
}
#the thing to calculate
gt<-rep(0, (t+1)*N);dim(gt)<-c(N,(t+1))
#assigned states
veg<-c(rep(0,5), rep(1,5))
veg.com<-rep(veg, t);dim(veg.com)<-c(N,t)
for (i in 1:t){
gt[,i+1]<-ifelse(veg.com[,i]==0, NEE[,i]/5, NEE[,i-3]/5)
}
#to have a view of what happens
veg1<-gt[1,]*5 #assignment for veg.com==0
veg2<-gt[10,]*5 #assignment for veg.com==1
what<-cbind(NEE[1,], veg1,veg2)
what
当然它可以工作,除了它如何在 veg.com==1 时延迟生效之前填充第一位(此处显示为 veg2 中的前 4 个值)。我确定有解决方法,但我首先只是想了解 R 在最初的几个循环中做了什么?