无法将 R dump() 数据导入 JAGS,"unexpected LIST"

Can't import R dump() data into JAGS, "unexpected LIST"

我使用 R dump() 按照最新的 JAGS 手册创建了一个 data.txt 文件,但我将 运行 保留在这个错误中:

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

dump()产生的data.txt,我从中删除了由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,数据将正确导入,但显然这不是我想要的。最奇怪的部分是,如果改用 RJAGSR2JAGS 包,整个过程都可以正常工作。有谁知道如何格式化这些数据以在 JAGS 中工作?

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

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

马特

对于我来说似乎解决这个问题的是根据 Martyn 在 JAGS 板上的建议的一个简单命令:

x <- as.matrix(x)