allPerms.Rd
allPerms
is a utility function to return the set of
permutations for a given R object and a specified permutation design.
the number of observations or an 'object' from which the
number of observations can be determined via getNumObs
.
a list of control values describing properties of the
permutation design, as returned by a call to
how
.
logical; should allPerms
check the design? The
default is to check, but this can be skipped, for example if a
function checked the design earlier.
for summary.allPerms
, an object of class
"allPerms"
. For as.allPerms
a matrix or something that
can be coerced to a matrix by as.matrix
.
arguments to other methods.
an object of class "allPerms"
, as returned by allPerms
.
Function allPerms
enumerates all possible permutations for the
number of observations and the selected permutation scheme. It has
print
and summary
methods. allPerms
returns a matrix containing all possible permutations, possibly
containing the observed ordering (if argument observed
is
TRUE
). The rows of this matrix are the various permutations and
the columns reflect the number of samples.
With free permutation designs, and restricted permutation schemes with
large numbers of observations, there are a potentially huge number of
possible permutations of the samples. It would be inefficient, not to
mention incredibly time consuming, to enumerate them all. Storing all
possible permutations would also become problematic in such cases. To
control this and guard against trying to evaluate too large a number
of permutations, if the number of possible permutations is larger than
getMaxperm(control)
, allPerms
exits with an error.
The as.matrix
method sets the control
and seed
attributes to NULL
and removes the "permutationMatrix"
class, resulting in a standard matrix object.
For allPerms
, and object of class "allPerms"
, a matrix
whose rows are the set of all possible permutations for the supplies
number of observations and permutation scheme selected. The matrix has
two additional attributes control
and
observed
. Attribute control
contains the argument
control
(possibly updated via check
). Attribute
observed
contains argument observed
.
If permuting the strata themselves, a balanced design is required (the
same number of observations in each level of strata
. This is
common to all functions in the package.
## allPerms can work with a vector
vec <- c(3,4,5)
allPerms(vec) ## free permutation
#> [,1] [,2] [,3]
#> [1,] 1 3 2
#> [2,] 2 1 3
#> [3,] 2 3 1
#> [4,] 3 1 2
#> [5,] 3 2 1
## enumerate all possible permutations for a more complicated
## design
fac <- gl(2,6)
ctrl <- how(within = Within(type = "grid", mirror = FALSE,
constant = TRUE, nrow = 3, ncol = 2),
plots = Plots(strata = fac))
Nobs <- length(fac)
numPerms(seq_len(Nobs), control = ctrl) ## 6
#> [1] 6
(tmp <- allPerms(Nobs, control = update(ctrl, observed = TRUE)))
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
#> [1,] 2 3 4 5 6 1 8 9 10 11 12 7
#> [2,] 3 4 5 6 1 2 9 10 11 12 7 8
#> [3,] 4 5 6 1 2 3 10 11 12 7 8 9
#> [4,] 5 6 1 2 3 4 11 12 7 8 9 10
#> [5,] 6 1 2 3 4 5 12 7 8 9 10 11
#> [6,] 1 2 3 4 5 6 7 8 9 10 11 12
(tmp2 <- allPerms(Nobs, control = ctrl))
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
#> [1,] 2 3 4 5 6 1 8 9 10 11 12 7
#> [2,] 3 4 5 6 1 2 9 10 11 12 7 8
#> [3,] 4 5 6 1 2 3 10 11 12 7 8 9
#> [4,] 5 6 1 2 3 4 11 12 7 8 9 10
#> [5,] 6 1 2 3 4 5 12 7 8 9 10 11
## turn on mirroring
##ctrl$within$mirror <- TRUE
ctrl <- update(ctrl, within = update(getWithin(ctrl), mirror = TRUE))
numPerms(seq_len(Nobs), control = ctrl)
#> [1] 12
(tmp3 <- allPerms(Nobs, control = update(ctrl, observed = TRUE)))
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
#> [1,] 2 3 4 5 6 1 8 9 10 11 12 7
#> [2,] 3 4 5 6 1 2 9 10 11 12 7 8
#> [3,] 4 5 6 1 2 3 10 11 12 7 8 9
#> [4,] 5 6 1 2 3 4 11 12 7 8 9 10
#> [5,] 6 1 2 3 4 5 12 7 8 9 10 11
#> [6,] 1 2 3 4 5 6 7 8 9 10 11 12
#> [7,] 1 6 5 4 3 2 7 12 11 10 9 8
#> [8,] 2 1 6 5 4 3 8 7 12 11 10 9
#> [9,] 3 2 1 6 5 4 9 8 7 12 11 10
#> [10,] 4 3 2 1 6 5 10 9 8 7 12 11
#> [11,] 5 4 3 2 1 6 11 10 9 8 7 12
#> [12,] 6 5 4 3 2 1 12 11 10 9 8 7
(tmp4 <- allPerms(Nobs, control = ctrl))
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
#> [1,] 2 3 4 5 6 1 8 9 10 11 12 7
#> [2,] 3 4 5 6 1 2 9 10 11 12 7 8
#> [3,] 4 5 6 1 2 3 10 11 12 7 8 9
#> [4,] 5 6 1 2 3 4 11 12 7 8 9 10
#> [5,] 6 1 2 3 4 5 12 7 8 9 10 11
#> [6,] 1 6 5 4 3 2 7 12 11 10 9 8
#> [7,] 2 1 6 5 4 3 8 7 12 11 10 9
#> [8,] 3 2 1 6 5 4 9 8 7 12 11 10
#> [9,] 4 3 2 1 6 5 10 9 8 7 12 11
#> [10,] 5 4 3 2 1 6 11 10 9 8 7 12
#> [11,] 6 5 4 3 2 1 12 11 10 9 8 7
## prints out details of the permutation scheme as
## well as the matrix of permutations
summary(tmp3)
#>
#> Complete enumeration of permutations
#>
#> Permutation Design:
#>
#> Blocks:
#> Defined by: none
#>
#> Plots:
#> Plots: fac
#> Permutation type: none
#> Mirrored?: No
#>
#> Within Plots:
#> Permutation type: grid
#> Mirrored?: Yes
#> Different permutation within each Plot?: No
#> Grid dimensions: 3 rows 2 cols
#>
#> Permutation details:
#> Number of permutations: 199
#> Max. number of permutations allowed: 9999
#> Evaluate all permutations?: No. Activation limit: 5040
#>
#> All permutations:
#> Contains observed ordering?: Yes
#>
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
#> [1,] 2 3 4 5 6 1 8 9 10 11 12 7
#> [2,] 3 4 5 6 1 2 9 10 11 12 7 8
#> [3,] 4 5 6 1 2 3 10 11 12 7 8 9
#> [4,] 5 6 1 2 3 4 11 12 7 8 9 10
#> [5,] 6 1 2 3 4 5 12 7 8 9 10 11
#> [6,] 1 2 3 4 5 6 7 8 9 10 11 12
#> [7,] 1 6 5 4 3 2 7 12 11 10 9 8
#> [8,] 2 1 6 5 4 3 8 7 12 11 10 9
#> [9,] 3 2 1 6 5 4 9 8 7 12 11 10
#> [10,] 4 3 2 1 6 5 10 9 8 7 12 11
#> [11,] 5 4 3 2 1 6 11 10 9 8 7 12
#> [12,] 6 5 4 3 2 1 12 11 10 9 8 7
summary(tmp4)
#>
#> Complete enumeration of permutations
#>
#> Permutation Design:
#>
#> Blocks:
#> Defined by: none
#>
#> Plots:
#> Plots: fac
#> Permutation type: none
#> Mirrored?: No
#>
#> Within Plots:
#> Permutation type: grid
#> Mirrored?: Yes
#> Different permutation within each Plot?: No
#> Grid dimensions: 3 rows 2 cols
#>
#> Permutation details:
#> Number of permutations: 198
#> Max. number of permutations allowed: 9999
#> Evaluate all permutations?: No. Activation limit: 5040
#>
#> All permutations:
#> Contains observed ordering?: No
#>
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
#> [1,] 2 3 4 5 6 1 8 9 10 11 12 7
#> [2,] 3 4 5 6 1 2 9 10 11 12 7 8
#> [3,] 4 5 6 1 2 3 10 11 12 7 8 9
#> [4,] 5 6 1 2 3 4 11 12 7 8 9 10
#> [5,] 6 1 2 3 4 5 12 7 8 9 10 11
#> [6,] 1 6 5 4 3 2 7 12 11 10 9 8
#> [7,] 2 1 6 5 4 3 8 7 12 11 10 9
#> [8,] 3 2 1 6 5 4 9 8 7 12 11 10
#> [9,] 4 3 2 1 6 5 10 9 8 7 12 11
#> [10,] 5 4 3 2 1 6 11 10 9 8 7 12
#> [11,] 6 5 4 3 2 1 12 11 10 9 8 7