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)
Run Code Online (Sandbox Code Playgroud)
但是,如果我有我的选择,我真的不希望创建该文件.
有没有办法在R中创建包含文本的某种虚拟文件?
我想可能有某种方法使用R连接以某种方式将字符串写入变量以模仿文件的功能.
我正在思考的粗略伪代码:
m1.jags <- "model {
...
}
"
jags.model(SomeRCommand(m1.jags), data=Data)
Run Code Online (Sandbox Code Playgroud)
谢谢@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)
Run Code Online (Sandbox Code Playgroud)