This function generates all the permutations of selecting k items from n items.
The results are in lexicographical order.
permutations(
x = NULL,
k = NULL,
n = NULL,
v = NULL,
freq = NULL,
replace = FALSE,
layout = NULL,
nitem = -1L,
skip = NULL,
index = NULL,
nsample = NULL,
drop = NULL
)an integer or a vector, will be treated as n if integer; otherwise, will be treated as v.
Should not be specified together with n and v.
an integer, the number of items drawn, defaults to n if freq is NULL else sum(freq)
an integer, the total number of items, its value may be implicitly deduced from length(v) or length(freq)
a vector to be drawn, defaults to 1:n.
an integer vector of item repeat frequencies
an logical to draw items with replacement
if "row", "column" or "list" is specified, the returned value would be a "row-major" matrix, a "column-major" matrix or a list respectively
number of permutations required, usually used with skip
the number of permutations skipped
a vector of indices of the desired permutations
sampling random permutations
vectorize a matrix or unlist a list
ipermutations for iterating permutations and npermutations to calculate number of permutations
permutations(3)
#> [,1] [,2] [,3]
#> [1,] 1 2 3
#> [2,] 1 3 2
#> [3,] 2 1 3
#> [4,] 2 3 1
#> [5,] 3 1 2
#> [6,] 3 2 1
permutations(LETTERS[1:3])
#> [,1] [,2] [,3]
#> [1,] "A" "B" "C"
#> [2,] "A" "C" "B"
#> [3,] "B" "A" "C"
#> [4,] "B" "C" "A"
#> [5,] "C" "A" "B"
#> [6,] "C" "B" "A"
# choose 2 from 4
permutations(4, 2)
#> [,1] [,2]
#> [1,] 1 2
#> [2,] 1 3
#> [3,] 1 4
#> [4,] 2 1
#> [5,] 2 3
#> [6,] 2 4
#> [7,] 3 1
#> [8,] 3 2
#> [9,] 3 4
#> [10,] 4 1
#> [11,] 4 2
#> [12,] 4 3
permutations(LETTERS[1:3], k = 2)
#> [,1] [,2]
#> [1,] "A" "B"
#> [2,] "A" "C"
#> [3,] "B" "A"
#> [4,] "B" "C"
#> [5,] "C" "A"
#> [6,] "C" "B"
# multiset with frequencies c(2, 3)
permutations(k = 3, freq = c(2, 3))
#> [,1] [,2] [,3]
#> [1,] 1 1 2
#> [2,] 1 2 1
#> [3,] 1 2 2
#> [4,] 2 1 1
#> [5,] 2 1 2
#> [6,] 2 2 1
#> [7,] 2 2 2
# with replacement
permutations(4, 2, replace = TRUE)
#> [,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
#> [13,] 4 1
#> [14,] 4 2
#> [15,] 4 3
#> [16,] 4 4
# column major
permutations(3, layout = "column")
#> [,1] [,2] [,3] [,4] [,5] [,6]
#> [1,] 1 1 2 2 3 3
#> [2,] 2 3 1 3 1 2
#> [3,] 3 2 3 1 2 1
permutations(4, 2, layout = "column")
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
#> [1,] 1 1 1 2 2 2 3 3 3 4 4 4
#> [2,] 2 3 4 1 3 4 1 2 4 1 2 3
# list output
permutations(3, layout = "list")
#> [[1]]
#> [1] 1 2 3
#>
#> [[2]]
#> [1] 1 3 2
#>
#> [[3]]
#> [1] 2 1 3
#>
#> [[4]]
#> [1] 2 3 1
#>
#> [[5]]
#> [1] 3 1 2
#>
#> [[6]]
#> [1] 3 2 1
#>
permutations(4, 2, layout = "list")
#> [[1]]
#> [1] 1 2
#>
#> [[2]]
#> [1] 1 3
#>
#> [[3]]
#> [1] 1 4
#>
#> [[4]]
#> [1] 2 1
#>
#> [[5]]
#> [1] 2 3
#>
#> [[6]]
#> [1] 2 4
#>
#> [[7]]
#> [1] 3 1
#>
#> [[8]]
#> [1] 3 2
#>
#> [[9]]
#> [1] 3 4
#>
#> [[10]]
#> [1] 4 1
#>
#> [[11]]
#> [1] 4 2
#>
#> [[12]]
#> [1] 4 3
#>
# specifc range of permutations
permutations(4, 2, nitem = 2, skip = 3)
#> [,1] [,2]
#> [1,] 2 1
#> [2,] 2 3
# specific permutations
permutations(4, 2, index = c(3, 5))
#> [,1] [,2]
#> [1,] 1 4
#> [2,] 2 3
# random permutations
permutations(4, 2, nsample = 3)
#> [,1] [,2]
#> [1,] 1 3
#> [2,] 1 2
#> [3,] 2 4
# zero sized permutations
dim(permutations(0))
#> [1] 1 0
dim(permutations(5, 0))
#> [1] 1 0
dim(permutations(5, 6))
#> [1] 0 6
dim(permutations(0, 0))
#> [1] 1 0
dim(permutations(0, 1))
#> [1] 0 1