What is R's multidimensional equivalent of rbind and cbind?

18,356

See the abind package. If you want them to bind on a 3rd dimension, do this:

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

See ?abind

Also, abind gives a lot more convenience, but for simple binding you can just manipulate the values directly, based on the default ordering:

array(c(x, y), dim = c(2, 2, 2))
Share:
18,356
Ryan C. Thompson
Author by

Ryan C. Thompson

Updated on June 05, 2022

Comments

  • Ryan C. Thompson
    Ryan C. Thompson almost 2 years

    When working with matrices in R, one can put them side-by-side or stack them top of each other using cbind and rbind, respectively. What is the equivalent function for stacking matrices or arrays in other dimensions?

    For example, the following creates a pair of 2x2 matrices, each having 4 elements:

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

    What is the code to combine them into a 2x2x2 array with 8 elements?

  • Alison Bennett
    Alison Bennett almost 6 years
    There is also a function called Abind in the DescTools package. Looks almost identical to me.
  • Mark Miller
    Mark Miller about 5 years
    If I want to add a new matrix, z, to an existing array, my.array, this seems to work: array(c(my.array, z), dim = c(dim(my.array)[1], dim(my.array)[2], 3))