make array from index vector positions respecting dim and dimorder

vectorIndex2arrayIndex(x, dim = NULL, dimorder = NULL, vw = NULL)

Arguments

x

a vector of indices in seq_len(prod(dim))

dim

NULL or dim

dimorder

NULL or dimorder

vw

NULL or integer matrix[2,m], see details

Details

The fastest rotating dimension is dim[dimorder[1]], then dim[dimorder[2]], and so forth.
The parameters 'x' and 'dim' may refer to a subarray of a larger array, in this case, the array indices 'x' are interpreted as 'vw[1,] + x' within the larger array 'vw[1,] + x + vw[2,]'.

Value

an n by m matrix with n m-dimensional array indices

Author

Jens Oehlschlägel

Examples

  matrix(1:12, 3, 4)
#>      [,1] [,2] [,3] [,4]
#> [1,]    1    4    7   10
#> [2,]    2    5    8   11
#> [3,]    3    6    9   12
  vectorIndex2arrayIndex(1:12, dim=3:4)
#>       [,1] [,2]
#>  [1,]    1    1
#>  [2,]    2    1
#>  [3,]    3    1
#>  [4,]    1    2
#>  [5,]    2    2
#>  [6,]    3    2
#>  [7,]    1    3
#>  [8,]    2    3
#>  [9,]    3    3
#> [10,]    1    4
#> [11,]    2    4
#> [12,]    3    4
  vectorIndex2arrayIndex(1:12, dim=3:4, dimorder=2:1)
#>       [,1] [,2]
#>  [1,]    1    1
#>  [2,]    1    2
#>  [3,]    1    3
#>  [4,]    1    4
#>  [5,]    2    1
#>  [6,]    2    2
#>  [7,]    2    3
#>  [8,]    2    4
#>  [9,]    3    1
#> [10,]    3    2
#> [11,]    3    3
#> [12,]    3    4
  matrix(1:30, 5, 6)
#>      [,1] [,2] [,3] [,4] [,5] [,6]
#> [1,]    1    6   11   16   21   26
#> [2,]    2    7   12   17   22   27
#> [3,]    3    8   13   18   23   28
#> [4,]    4    9   14   19   24   29
#> [5,]    5   10   15   20   25   30
  vectorIndex2arrayIndex(c(6L, 7L, 8L, 11L, 12L, 13L, 16L, 17L, 18L, 21L, 22L, 23L)
, vw=rbind(c(0,1), c(3,4), c(2,1)))
#>       [,1] [,2]
#>  [1,]    1    1
#>  [2,]    2    1
#>  [3,]    3    1
#>  [4,]    1    2
#>  [5,]    2    2
#>  [6,]    3    2
#>  [7,]    1    3
#>  [8,]    2    3
#>  [9,]    3    3
#> [10,]    1    4
#> [11,]    2    4
#> [12,]    3    4
  vectorIndex2arrayIndex(c(2L, 8L, 14L, 3L, 9L, 15L, 4L, 10L, 16L, 5L, 11L, 17L)
, vw=rbind(c(0,1), c(3,4), c(2,1)), dimorder=2:1)
#>       [,1] [,2]
#>  [1,]    1    1
#>  [2,]    2    1
#>  [3,]    3    1
#>  [4,]    1    2
#>  [5,]    2    2
#>  [6,]    3    2
#>  [7,]    1    3
#>  [8,]    2    3
#>  [9,]    3    3
#> [10,]    1    4
#> [11,]    2    4
#> [12,]    3    4