R: generate all permutations of vector without duplicated elements
Using gtools
package:
require(gtools)
permutations(n = 9, r = 3, v = 1:9)
# n -> size of source vector
# r -> size of target vector
# v -> source vector, defaults to 1:n
# repeats.allowed = FALSE (default)
EDIT: This is not what the OP asked for, but I leave this answer, to avoid confusion.
My math is a little bit rusty, but i think you are describing combinations, not permutations. The base functioncombn()
returns combinations.
I illustrate with a manageable set - all combinations of length 3, from the vector 1:4
:
combn(4, 3)
[,1] [,2] [,3] [,4]
[1,] 1 1 1 2
[2,] 2 2 3 3
[3,] 3 4 4 4
The difference between combinations
and permutations
is that in combinations
the order doesn't matter. So, (2, 3, 4)
and (4, 3, 2)
is the same combination, but different permutations.
utils::combn
; combinat::combn
or combinat::permn
are alternatives.