В 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
Есть ли относительно простой способ сделать это?
UPDATE
Основываясь на предложении ниже, я смог преобразовать каждую матрицу в ожидаемый массив с помощью следующего кода:
m1.arrayList <- lapply(m1, function(x) array(x, dim = c(3000, 3, 2000, 4, 6)))
Затем я смог преобразовать список 5-dim массивов в 6-dim массив с помощью:
m1.array <- simplify2array(m1.arrayList)