These functions allow for the construction of complex repeating patterns
corresponding to those obtained by unwrapping arrays. Consider an array
with dimensions n
; then for each value of the dimensions in
which
, this function returns a vector which places the corresponding
entry of x
into every place which would match this pattern when the
full array is unwrapped.
For example, if a full 4-way array has dimensions 2*2*2*2 and we consider
the margin of variables 2 and 4, then the function returns the pattern
c(1,1,2,2,1,1,2,2,3,3,4,4,3,3,4,4). The entries 1,2,3,4 correspond to the
patterns (0,0), (1,0), (0,1) and (1,1) for the 2nd and 4th indices.
In patternRepeat()
the argument x
is repeated according to the
pattern, while patternRepeat0()
just returns the indexing pattern.
So patternRepeat(x,which,n)
is effectively equivalent to
x[patternRepeat0(which,n)]
.
The length of x
must be equal to prod(n[which])
.