我正在尝试使用rjags在循环中运行7个JAGS模型,但是无法让循环运行。
首先我创建了七个模型,(模型txt文件已经创建)。 JAGS代码看起来很好,我认为我对R向量的经验不足是问题所在。
model1 <- NULL
model2 <- NULL
model3 <- NULL
model4 <- NULL
model5 <- NULL
model6 <- NULL
model7 <- NULL
for (i in 1:totaltime) { #where totaltime is length=7
assign(paste("model",i,sep=""), jags.model(paste("model",i,".txt",sep=""), data=DataList , #inits=initsList ,
n.chains=nChains , n.adapt=adaptSteps ))
}
这部分运行正常并创建了七个模型,然后是老化步骤:
for (i in 1:totaltime) {
update(paste("model",i,sep=""), n.iter=burnInSteps)
}
此部分出错:对象[[name,exact = TRUE]]中的错误:下标超出范围。但是如果我输入:
update(model1, n.iter=burnInSteps)
工作正常。为什么更新功能不识别循环粘贴?下一行也说:
for (i in 1:totaltime) {
paste("codaSamples",i,sep="")=coda.samples(paste("model",i,sep=""), variable.names=parameters,n.iter=nPerChain,thin=thinSteps)
}
其中给出了错误消息:模型$ iter中的错误:$ operator对原子向量无效
但是,如果我将矢量运行为:
codaSamples1=coda.samples(model1, variable.names=parameters,n.iter=nPerChain,thin=thinSteps)
它运作正常,令人沮丧!