The command-line can be a little unintuitive when dealing with multidimensional objects since it is a 2D medium. It is therefore hard to envision objects greater than 2-dimensions. They exist however!
An array, in R, is simply a vector (list of objects) where each element has additional “dimension” attributes. In other words, each vector element is given a dimensional position. This is fairly easy to represent 3-dimensionally (see below) but there is no reason why additional dimensional attributes cannot be applied to each vector element, placing them in the 4th, 5th…nth dimensions.
array(), I created a 3-dimensional array object (represented by that box with numbers you see below) populated with values 1 to 4. Each of these is given a dimensional attribute, the 1’s located are located at [1,1,1] and [1,2,1]. The 4’s are located at [2,1,2] and [2,2,2], and so on.
Here is the array function:
The first argument of
array() is the actual data to be used. The second argument is
dimensions which is an integer vector referring to the maximum dimensions of the array; for the example above, this is 2 by 2 by 2.
apply(), we can perform functions on elements which are aligned in certain directions, in this case
array() function takes the following arguments:
apply(X, margins, FUN)
X is the array over which apply should be…applied,
margins is an integer vector telling R which margins (dimensions) to maintain and which to collapse, and
FUN is the function to by applied. Basically, the
apply() function is taking the sum over all elements in a certain edge of the cube. The
margin attributes simply tell R which edges we are summing over. In the examples below, R converts a 3D array object into a 2D object. You can see the effect of changing the
margins attribute on the final result of the summed arrays shown below.