如何将一些R数据写入.csv文件?

时间:2013-11-07 17:32:01

标签: r jags

我正在尝试将一些采样输出值从JAGS导出为.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

2 个答案:

答案 0 :(得分:3)

mcmc.list可以包含多个链,您需要在写入CSV文件时选择所需的链:

write.csv(codaSamples[[1]], "CODASAMPLES.csv",row.names=FALSE)

应该做“正确的事情”,虽然我目前还没有链条来测试它。

答案 1 :(得分:2)

write.table需要一个数据框或一个矩阵(如果你没有传递它,它会试图强制它)。如果您查看codaSamples的结构,例如str(codaSamples)你会看到它是一个列表对象,其元素是列表或数据框或矩阵(我不知道它实际上是什么)。如果它像那样混合,write.table不知道如何将它变成csv。

如果您只想选择矩阵,可以使用names(codaSamples)str(codaSamples)再次找到元素的名称,然后执行类似sample.mcmc <- codaSamples[['Matrix']]或其他名称的操作,您应该可以将sample.mcmc保存到文件中,就像您一样。