0

我正在尝试使用 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)

它工作正常,真令人沮丧!

4

0 回答 0