如何获取具有重复元素的列表的所有可能排列?
例如,使用向量x = x (1,2,2)
的2 by我想要重复排列:
1 1
1 2
1 2
2 1
2 2
2 2
2 1
2 2
2 2
答案 0 :(得分:1)
使用众多可重复生成排列的程序包之一,可以轻松实现这一目标。
library(gtools)
gtools::permutations(3, 2, c(1, 2, 2), set = FALSE, repeats.allowed = TRUE)
[,1] [,2]
[1,] 1 1
[2,] 1 2
[3,] 1 2
[4,] 2 1
[5,] 2 2
[6,] 2 2
[7,] 2 1
[8,] 2 2
[9,] 2 2
library(arrangements)
arrangements::permutations(x = c(1,2,2), k = 2, replace = TRUE)
## output same as above
library(RcppAlgos) ### I am the author
RcppAlgos::permuteGeneral(c(1,2,2), 2, TRUE)
## output same as above
答案 1 :(得分:0)
您可以如下使用内置函数rep()
:
data.frame(V1 = rep(x, each = length(x)), V2 = rep(x, length(x)))
V1 V2
1 1 1
2 1 2
3 1 2
4 2 1
5 2 2
6 2 2
7 2 1
8 2 2
9 2 2