R:根据列名将JAGS输出矩阵转换为数组

时间:2019-06-21 01:05:58

标签: arrays r matrix indices jags

在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)

0 个答案:

没有答案
相关问题