我想生成向量的所有可能的排列

c(1,2,2,3,3)

在R.I中使用了以下代码:
library(combinat)
permn(c(1,2,2,3,3))

但是,此函数生成5!=120置换,因为它区分了两个2和两个3它应该产生5!/(2!*2!)=30个组合。
这个问题是用
unique(permn(c(1,2,2,3,3)))

但是,我想要一个函数,它给出
unique(permn(c(1,2,2,3,3)))

直接地,在一个函数中,不首先通过
permn(c(1,2,2,3,3))

最佳答案

你可以用iterpc软件包买到它们。

> x <- c(1, 2, 2, 3, 3)
> I <- iterpc(table(x), ordered=TRUE)
> getall(I)
      [,1] [,2] [,3] [,4] [,5]
 [1,]    1    2    2    3    3
 [2,]    1    2    3    2    3
 [3,]    1    2    3    3    2
 [4,]    1    3    2    2    3
 [5,]    1    3    2    3    2
 [6,]    1    3    3    2    2
 [7,]    2    1    2    3    3
 [8,]    2    1    3    2    3
 [9,]    2    1    3    3    2
[10,]    2    2    1    3    3
[11,]    2    2    3    1    3
[12,]    2    2    3    3    1
[13,]    2    3    1    2    3
[14,]    2    3    1    3    2
[15,]    2    3    2    1    3
[16,]    2    3    2    3    1
[17,]    2    3    3    1    2
[18,]    2    3    3    2    1
[19,]    3    1    2    2    3
[20,]    3    1    2    3    2
[21,]    3    1    3    2    2
[22,]    3    2    1    2    3
[23,]    3    2    1    3    2
[24,]    3    2    2    1    3
[25,]    3    2    2    3    1
[26,]    3    2    3    1    2
[27,]    3    2    3    2    1
[28,]    3    3    1    2    2
[29,]    3    3    2    1    2
[30,]    3    3    2    2    1

关于r - 在R中通过重复计算排列的功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47227673/

10-12 17:13