我想生成向量的所有可能的排列
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/