gpt4 book ai didi

r - 在 R 中计算重复排列的函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:55:47 24 4
gpt4 key购买 nike

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

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

在 R 中,我使用了以下代码:

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com