1

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

5 回答 5

5

使用gtools包,

library(gtools)

x <- c(1,1,2,2,3)

permutations(5, 5, x, set = FALSE)
于 2012-10-10T08:54:04.267 回答
3

只需使用该combinat软件包:

A = c(1,1,2,2,3)
library(combinat)
permn(A)
于 2012-10-10T08:51:40.610 回答
1

使用permute包:

x <- c(1,1,2,2,3)
require(permute)
allPerms(x, observed = TRUE)
于 2012-10-10T13:28:28.787 回答
1

如果你想用内置的 R 来做:

permute <- function(vec,n=length(vec)) {
  permute.index <- sample.int(length(vec),n)
  return(vec[permute.index])
}

permute(A)
于 2012-10-10T14:26:10.117 回答
0

我对组合和排列进行了广泛的研究。我发现的这个结果写在名为 Junction 的书上(一种计算组合和排列的艺术。要查看我的网站,请登录https://sites.google.com/site/junctionslpresentation/home

我也有你的问题的解决方案。我还发现要订购多对象排列。这种多对象排列我称之为(MSNO 的 CON),意思是多个相同数量的对象的组合顺序号。

To view this method of ordering then go to the site https://sites.google.com/site/junctionslpresentation/proof-for-advance-permutation at the bottom of this site I have attached some word documents. Your required solution is written on the word document 12 Proof (CON of MSNO) and 13 Proof (Converse of CON of MSNO). Download this word document for the proper view of the written matters.

于 2012-10-10T16:53:00.553 回答