R: Shift origin of arrays and vectors

shift {magic} | R Documentation

## Shift origin of arrays and vectors

### Description

Shift origin of arrays and vectors.

### Usage

    shift(x, i=1)
    ashift(a, v=rep(1,length(dim(a))))

### Arguments

`x` | Vector to be shifted
`i` | Number of places elements to be shifted, with default value of 1 meaning to put the last element first, followed by the first element, then the second, etc
`a` | Array to be shifted
`v` | Vector of numbers to be shifted in each dimension, with default value corresponding to `shift()`ing each dimension by 1 unit. If the length of `v` is less than `length(dim(a))`, it is padded with zeros (thus a scalar value of `i` indicates that the first dimension is to be shifted by `i` units)

### Details

Function `shift(x,n)` returns P^n(x) where P is the permutation (n,1,2,...,n-1).

Function `ashift` is the array generalization of this: the n-th dimension is shifted by `v[n]`. In other words, `ashift(a,v)=a[shift(1:(dim(a)[1]),v[1]),...,shift(1:(dim(a)[n]),v[n])]`. It is named by analogy with `abind()` and `aperm()`.

This function is here because a shifted semimagic square or hypercube is semimagic and a shifted pandiagonal square or hypercube is pandiagonal (note that a shifted magic square is not necessarily magic, and a shifted perfect hypercube is not necessarily perfect).

### Author(s)

Robin K. S. Hankin

### Examples

    shift(1:10,3)
    m <- matrix(1:100,10,10)
    ashift(m,c(1,1))
    ashift(m,c(0,1))    #note columns shifted by 1, rows unchanged.
    ashift(m,dim(m))    #m unchanged (Mnemonic).

[Package magic version 1.5-8 Index]