4

jags.model需要一个包含 BUGS 模型的文件名作为其第一个参数。为了在一个脚本中包含所有内容,我有时会使用writeLines命令将 BUGS 模型写入文件。例如,

library(rjags)
writeLines("
model {
    for (i in 1:length(Y1)) {
        Y1[i] ~ dnorm(Beta0, Beta1)
    }
    Beta0 ~ dunif(1, 5)
    Beta1 ~ dunif(0, 10000)
}
"
, "m1.jags")

mod1 <- jags.model("m1.jags", data=Data)

但是,如果我可以选择,我真的不希望创建该文件。

有没有办法在 R 中创建某种包含文本的虚拟文件?

我在想可能有某种方法可以使用 R 连接以某种方式将字符串写入变量以模仿文件的特征。

我在想的粗略伪代码:

m1.jags <- "model {
        ...
    }
    "
jags.model(SomeRCommand(m1.jags), data=Data)
4

1 回答 1

6

谢谢@Andrie 告诉我答案:即,只需用textConnection函数包围字符变量。

为了完整起见,这是如何应用于我的具体问题的:

m1.jags <- "
model {
    for (i in 1:length(Y1)) {
        Y1[i] ~ dnorm(Beta0, Beta1)
    }
    Beta0 ~ dunif(1, 5)
    Beta1 ~ dunif(0, 10000)
}
"
, "m1.jags")

mod1 <- jags.model(textConnection(m1.jags), data=Data)
于 2012-05-21T07:28:31.370 回答