Next: rotation() Up: MacAnova Help File Previous: robust()   Contents

rotate()

Usage:
rotate(x, k), x a vector or matrix, k an integer.



Keywords: time series, combining variables
rotate(x, k) "rotates" by k rows each column of the REAL, LOGICAL or
CHARACTER vector or matrix x.  When k > 0, rows pushed down off the end
are shifted to the start and when k < 0, rows pushed up before the start
are moved to the end.  k must be a single integer and is interpreted
modulo nrows(x).  For example, rotate(x,k) and rotate(x,k %% nrows(x))
are equivalent.

More explicitly, for -m < k < m, where m = nrows(x), rotate() moves rows
as follows:
  0 <= k <= m-1 (down column shift)   -(m-1) <= k <= 0 (up column shift)
 Row j -> Row j+k   for j=1,...,m-k   Row j -> Row j+k+m for j=1,...,-k
 Row j -> Row j+k-m for j=m-k+1,...,m Row j -> Row j+k for j=-k+1,...,m

The result has the same size and type as x.  When isvector(x) is True,
the result is a pure vector (ndims(x) = 1).  Otherwise, the result has 2
dimensions.

Examples:
  Cmd> rotate(vector(1,3,2,6,5,4),2)
  (1)           5           4           1           3           2
  (6)           6

  Cmd> rotate(matrix(vector(1,3,2,7, 6,5,4,8),4), -2)
  (1,1)           2           4
  (2,1)           7           8
  (3,1)           1           6
  (4,1)           3           5

  Cmd> rotate(vector("A","B","C","D"),-1)
  (1) "B"
  (2) "C"
  (3) "D"
  (4) "A"

Caution: Do not confuse rotate() with rotation() which does rotation of
factor loadings.


Gary Oehlert 2003-01-15