How to make the contents of a character vector appear like a file in R?
jags, r
Solution
Thank you @Andrie for telling me the answer: i.e., just surround the character variable with the `textConnection` function.
For the sake of completeness, here is how this applied to my specific problem:
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)
Problem
`jags.model` expects a file name containing a BUGS model as its first argument. In order to contain everything in one script, I sometimes use the `writeLines` command to write the BUGS model to a file. E.g., ``` 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) ``` However, if I had my choice, I don't really want the file to be created. Is there a way of creating some kind of virtual file in R that contains the text? I was thinking there might be some way of writing the string to a variable using R connections in some way to mimic features of a file. The rough pseudo code of what I was thinking: ``` m1.jags <- "model { ... } " jags.model(SomeRCommand(m1.jags), data=Data) ```