R中JAGS模型的循环问题
我试图用RJAG在一个循环中运行7个JAGS模型,但在运行循环时遇到了问题 首先,我创建了七个模型(已经创建了模型txt文件)。JAGS代码似乎很好,我认为问题在于我对R向量缺乏经验R中JAGS模型的循环问题,r,loops,jags,R,Loops,Jags,我试图用RJAG在一个循环中运行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
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 ))
}
此部分获取错误:对象[[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)
它工作得很好,太令人沮丧了 避免
assign
:它会导致这种错误(粘贴(“model”,i,sep=”“)
是一个带有变量名称的字符串,而不是变量本身),甚至更糟。您可以将结果存储在一个列表中:models[[i]]感谢您指定一些事情,因为列表似乎已经解决了这个问题。
codaSamples1=coda.samples(model1, variable.names=parameters,n.iter=nPerChain,thin=thinSteps)