سؤال

أحاول تصدير بعض قيم الإخراج التي تم أخذ عينات منها من 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
هل كانت مفيدة؟

المحلول

أ 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 إلى ملف مثلك تمامًا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top