在R中,我有一个JAGS模型输出(与jags.parfit
包中的dclone
并行生成),它是六个二维矩阵的列表(对应于六个链,每个链具有3000次重复) ),其列名等效于数组的索引。第一个数字具有3个唯一值,第二个数字为2000,第三个数字为4,第四个为6。
head(colnames(m1[[1]]))
[1] "y.pred[1,1,1,1]" "y.pred[2,1,1,1]" "y.pred[3,1,1,1]" "y.pred[1,2,1,1]" "y.pred[2,2,1,1]" "y.pred[3,2,1,1]"
我想将此长格式矩阵转换为5个维的数组,这些维对应于3000行作为行,而列名中的4个索引作为新列。该数组将具有以下尺寸:
dim(m1.array)
[1] 3000 3 2000 4 6
有相对简单的方法吗?
更新
基于以下建议,我能够使用以下代码将每个矩阵转换为期望的数组:
m1.arrayList <- lapply(m1, function(x) array(x, dim = c(3000, 3, 2000, 4, 6)))
然后,我可以使用以下命令将5维数组的列表转换为6维数组:
m1.array <- simplify2array(m1.arrayList)