Как записать некоторые данные R в файл.csv?
Я пытаюсь экспортировать некоторые выборочные выходные значения из 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 ответа
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
в файл, как у вас есть.