一个 mcmc.list
可以包含多个链条,您需要在写入CSV文件时选择所需的链条:
write.csv(codaSamples[[1]], "CODASAMPLES.csv",row.names=FALSE)
应该做“正确的事情”,尽管目前我没有链条进行测试。
题
我试图将一些采样的输出值从JAG将其导出到.csv格式中,以便在R中进行进一步的分析,但遇到了一些麻烦。
>
> codaSamples
[[1]]
Markov Chain Monte Carlo (MCMC) output:
Start = 4001
End = 14000
Thinning interval = 1
pai theta[1] theta[2] theta[3] theta[4]
[1,] 0.9774972 0.0081192689 0.0101738296 0.06981109 0.10674466
[2,] 0.9527935 0.0076402088 0.0099482287 0.07593964 0.11060883
[3,] 0.9467507 0.0076402088 0.0099482287 0.07593964 0.11060883
[4,] 0.9514251 0.0076402088 0.0099482287 0.07593964 0.11060883
[5,] 0.9419245 0.0076402088 0.0099482287 0.07593964 0.11060883
[6,] 0.9914296 0.0076402088 0.0099482287 0.07593964 0.11060883
[7,] 0.9903451 0.0076402088 0.0099482287 0.07593964 0.11060883
[8,] 0.9917113 0.0064704730 0.0095551321 0.06748512 0.11033123
...
...
[10000,] 0.9917113 0.0064704730 0.0095551321 0.06748512 0.11033123
> write.csv(codaSamples,"CODASAMPLES.csv",row.names=FALSE)
Error in as.data.frame.default(x[[i]], optional = TRUE, stringsAsFactors = stringsAsFactors) :
cannot coerce class '"mcmc.list"' into a data.frame
解决方案
一个 mcmc.list
可以包含多个链条,您需要在写入CSV文件时选择所需的链条:
write.csv(codaSamples[[1]], "CODASAMPLES.csv",row.names=FALSE)
应该做“正确的事情”,尽管目前我没有链条进行测试。
其他提示
write.table
期望数据框架或矩阵(如果您不传递它,它将尝试强迫它)。如果您查看的结构 codaSamples
与例如 str(codaSamples)
您会看到它是一个列表对象,其中列表,数据框或矩阵(我不知道它是什么)。如果那样混合 write.table
不知道如何将其变成CSV。
如果您只想选择矩阵,则可以找到元素的名称 names(codaSamples)
或再次来自 str(codaSamples)
然后做类似的事情 sample.mcmc <- codaSamples[['Matrix']]
或任何名称,那么您应该能够保存 sample.mcmc
像您一样的文件。