Я пытаюсь преобразовать 3D-массив в матрицу. Я хочу, чтобы третье измерение массива сформировало первую строку в матрице, и это третье измерение должно считываться по строке (т. Е. Строка 1, а затем строка 2 и т. Д. Размерности 3 должна составлять первую строку матрица). Я привел пример ниже, где массив имеет размеры 4, 3 и 5, а результирующая матрица имеет 5 строк и 12 столбцов. У меня есть решение ниже, которое достигает того, что я хочу, но оно кажется очень громоздким для больших массивов (оно сначала создает векторы из элементов массива (по строке), а затем обращает их в форму матрицы). Есть ли более элегантный способ сделать это? Спасибо заранее за любые предложения.Преобразование 3D-массива в матрицу в R
dat <- array(rnorm(60), dim=c(4, 3, 5))
results <- list(1:5)
for (i in 1:5) {
vec <- c(t(dat[, , i]))
results[[i]] <- vec
}
datNew <- rbind(results[[1]], results[[2]], results[[3]], results[[4]], results[[5]])
Вы должны изменить формулировку. Вероятно, вы подразумеваете под «первым элементом» массива, который печатается при печати массива. Эти матрицы являются элементами _3rd_ измерения массива. Из вашего примера я вижу, что вы просто хотите сгладить первые два измерения. Мой ответ ниже дает вам то, что вы хотите. – VitoshKa
Спасибо VitoshKa за то, что указали это - я редактировал вопрос. – Steve