Что такое многомерный эквивалент rbind и cbind в R?

При работе с матрицами в R их можно расположить рядом или сложить друг на друга с помощью cbind и rbind соответственно. Какова эквивалентная функция для укладки матриц или массивов в других измерениях?

Например, следующее создает пару матриц 2x2, каждая из которых имеет 4 элемента:

x = cbind(1:2,3:4)
y = cbind(5:6,7:8)

Что такое код, чтобы объединить их в массив 2x2x2 с 8 элементами?


person Ryan C. Thompson    schedule 30.11.2010    source источник


Ответы (1)


См. пакет abind. Если вы хотите, чтобы они связывались в 3-м измерении, сделайте следующее:

library(abind)
abind(x, y, along = 3)

См. ?abind

Кроме того, abind дает гораздо больше удобства, но для простой привязки вы можете просто манипулировать значениями напрямую, основываясь на порядке по умолчанию:

array(c(x, y), dim = c(2, 2, 2))
person mdsumner    schedule 30.11.2010
comment
В пакете DescTools также есть функция Abind. Выглядит почти идентично мне. - person Alison Bennett; 18.07.2018
comment
Если я хочу добавить новую матрицу z в существующий массив my.array, похоже, это работает: array(c(my.array, z), dim = c(dim(my.array)[1], dim(my.array)[2], 3)) - person Mark Miller; 20.03.2019