我正在尝试使用 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 中的错误:$ 运算符对原子向量无效
但是,如果我将向量运行为:
codaSamples1=coda.samples(model1, variable.names=parameters,n.iter=nPerChain,thin=thinSteps)
它工作正常,真令人沮丧!