在R中,我如何产生一个组的所有排列,但在这个组中有一些重复的元素。
示例:
A = {1,1,2,2,3}
解决方案:
1,1,2,2,3
1,1,2,3,2
1,1,3,2,2
1,2,1,2,3
1,2,2,1,3
1,2,2,3,1
.
.
答案 0 :(得分:5)
使用gtools
包,
library(gtools)
x <- c(1,1,2,2,3)
permutations(5, 5, x, set = FALSE)
答案 1 :(得分:3)
只需使用combinat
包:
A = c(1,1,2,2,3)
library(combinat)
permn(A)
答案 2 :(得分:1)
使用permute
包:
x <- c(1,1,2,2,3)
require(permute)
allPerms(x, observed = TRUE)
答案 3 :(得分:1)
如果您想使用内置R:
permute <- function(vec,n=length(vec)) {
permute.index <- sample.int(length(vec),n)
return(vec[permute.index])
}
permute(A)
答案 4 :(得分:1)
我对组合和排列进行了广泛的研究。我发现的这个结果写在一本名为Junction的书上(计算组合和排列的艺术。要查看我的网站,请登录https://sites.google.com/site/junctionslpresentation/home
我也有你的问题的解决方案。我还发现订购了多个对象排列。这个多对象排列我称之为(MSNO的CON),这意味着多个相同数量的对象的组合顺序号。
要查看此订购方法,请转到网站https://sites.google.com/site/junctionslpresentation/proof-for-advance-permutation 在这个网站的底部,我附上了一些word文档。您所需的解决方案写在word文档12 Proof(CONN的MS)和13 Proof(MSNO的CON的Converse)上。下载此word文档以正确查看书面事项。