具有重复元素的样本2到2的排列

时间:2018-06-21 15:42:35

标签: r permutation

如何获取具有重复元素的列表的所有可能排列? 例如,使用向量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

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