# apad: Pad arrays In magic: Create and Investigate Magic Squares

### Description

Generalized padding for arrays of arbitrary dimension

### Usage

```apad(a, l, e = NULL, method = "ext", post = TRUE)
```

### Arguments

 `a` Array to be padded `l` Amount of padding to add. If a vector of length greater than one, it is interpreted as the extra extent of `a` along each of its dimensions (standard recycling is used). If of length one, interpret as the dimension to be padded, in which case the amount is given by argument `l`. `e` If `l` is of length one, the amount of padding to add to dimension `l` `method` String specifying the values of the padded elements. See details section. `post` Boolean, with default `TRUE` meaning to append to `a` and `FALSE` meaning to prepend.

### Details

Argument `method` specifies the values of the padded elements. It can be either “`ext`”, “`mirror`”, or “`rep`”.

Specifying `ext` (the default) uses a padding value given by the “nearest” element of `a`, as measured by the Manhattan metric.

Specifying `mirror` fills the array with alternate mirror images of `a`; while `rep` fills it with unreflected copies of `a`.

### Note

Function `apad()` does not work with arrays with dimensions of zero extent: what to pad it with? To pad with a particular value, use `adiag()`.

The function works as expected with vectors, which are treated as one-dimensional arrays. See examples section.

Function `apad()` is distinct from `adiag()`, which takes two arrays and binds them together. Both functions create an array of the same dimensionality as their array arguments but with possibly larger extents. However, the functions differ in the values of the new array elements. Function `adiag()` uses a second array; function `apad()` takes the values from its primary array argument.

### Author(s)

Robin K. S. Hankin

`adiag`

### Examples

```

a <- matrix(1:30,5,6)