重复排列

时间:2012-10-10 08:33:07

标签: r permutation

在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
.
.

5 个答案:

答案 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文档以正确查看书面事项。