0

我使用 Rdump()创建了最新 JAGS 手册指定的 data.txt 文件,但我一直遇到此错误:

Reading data file data.txt
syntax error, unexpected LIST, expecting DOUBLE or NA or ASINTEGER or 'c'

生成的data.txt dump(),我从中删除了R分配的“L”:

M <- 4
N <- 2
x <- structure(list(Var1 = c(0, 1, 0, 1), Var2 = c(0, 0, 1, 1)), .Names = c("Var1",
"Var2"), out.attrs = structure(list(dim = c(2, 2), dimnames = structure(list(
    Var1 = c("Var1=0", "Var1=1"), Var2 = c("Var2=0", "Var2=1"
    )), .Names = c("Var1", "Var2"))), .Names = c("dim", "dimnames"
)), class = "data.frame", row.names = c(NA, -4))
counts <- c(377558, 1001, 2000, 2000)
total <- 382559

如果我删除x,数据将正确导入,但显然这不是我想要的。最奇怪的部分是,如果改用RJAGSandR2JAGS包,整个事情都可以正常工作。有谁知道如何格式化这些数据以在 JAGS 中工作?

4

2 回答 2

1

正如 Martyn 在 JAGS 论坛上所说,JAGS 中不允许使用列表(或 data.frame)。在使用转储之前,您需要将其转换为数组或矩阵。

顺便说一句,如果您需要从外部调用 JAGS,那么您可能还想查看 runjags 包(在 CRAN 上),它可以自动创建文件以调用 JAGS(尝试 run.jags(..., 方法='interruptible', keep.jags.files='my_folder') 例如)。不过,您仍然需要先将数据框转换为矩阵。

马特

于 2016-01-19T11:34:27.073 回答
0

根据 Martyn 在 JAGS 板上的建议,似乎可以解决这个问题的一个简单命令:

x <- as.matrix(x)
于 2016-01-20T19:09:16.543 回答