相关疑难解决方法(0)

置换R中向量的所有唯一枚举

我试图找到一个函数来置换向量的所有唯一排列,同时不计算相同元素类型的子集内的并置.例如:

dat <- c(1,0,3,4,1,0,0,3,0,4)
Run Code Online (Sandbox Code Playgroud)

具有

factorial(10)
> 3628800
Run Code Online (Sandbox Code Playgroud)

可能的排列,但仅限于 10!/(2!*2!*4!*2!)

factorial(10)/(factorial(2)*factorial(2)*factorial(2)*factorial(4))
> 18900
Run Code Online (Sandbox Code Playgroud)

忽略同一元素类型的子集内的并置时的唯一排列.

我可以通过使用unique()permn()包中的函数来获得这个combinat

unique( permn(dat) )
Run Code Online (Sandbox Code Playgroud)

但这在计算上非常昂贵,因为它涉及枚举n!,这可能比我需要的排列多一个数量级.没有先计算,有没有办法做到这一点n!

algorithm r permutation combinatorics

18
推荐指数
1
解决办法
4328
查看次数

标签 统计

algorithm ×1

combinatorics ×1

permutation ×1

r ×1