# arev: Reverses some dimensions; a generalization of rev In magic: Create and Investigate Magic Squares

## Description

A multidimensional generalization of `rev()`: given an array `a`, and a Boolean vector `swap`, return an array of the same shape as `a` but with dimensions corresponding to `TRUE` elements of `swap` reversed. If `swap` is not Boolean, it is interpreted as the dimensions along which to swap.

## Usage

 `1` ```arev(a, swap = TRUE) ```

## Arguments

 `a` Array to be reversed `swap` Vector of Boolean variables. If `swap[i]` is `TRUE`, then dimension `i` of array `a` is reversed. If `swap` is of length one, recycle to `length(dim(a))`

## Details

If `swap` is not Boolean, it is equivalent to ```1:n %in% swap``` (where `n` is the number of dimensions). Thus multiple entries are ignored, as are entries greater than `n`.

If `a` is a vector, `rev(a)` is returned.

Function `arev()` handles zero-extent dimensions as expected.

Function `arev()` does not treat singleton dimensions specially, and is thus different from Octave's `flipdim()`, which (if supplied with no second argument) flips the first nonsingleton dimension. To reproduce this, use `arev(a,fnsd(a))`.

## Author(s)

Robin K. S. Hankin

`ashift`

## Examples

 ```1 2 3 4 5``` ```a <- matrix(1:42,6,7) arev(a) #Note swap defaults to TRUE b <- magichypercube.4n(1,d=4) arev(b,c(TRUE,FALSE,TRUE,FALSE)) ```

magic documentation built on May 2, 2019, 12:21 p.m.