R填充矩阵或数组,在for循环中使用条件滞后计算

时间:2013-01-19 16:48:14

标签: arrays r lag

我已经在列表档案中挖掘了,要么我不知道要问这个问题的正确的话还是之前没有提出 -

我有一个模拟功能,我会跟踪一段时间内的点列表,并希望根据作业引入额外的滞后计算。我已经创建了一个非常简单的代码来理解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

当然它有效,除了它在填充第一位(在这里显示为veg2中的前4个值)之前,当veg.com == 1时滞后有效。我确定有工作,但我首先只是想了解R在最初的几个循环中做了什么?

1 个答案:

答案 0 :(得分:0)

通过第二个for循环的前两次,您将使用带有表达式

的负索引
NEE[ , i-3]

这将返回10列矩阵,删除第2列。下一次迭代将返回另一个10列矩阵,删除第一列。负指数删除R

中矩阵或数据帧的部分