значительно быстрее, чем все другие методы, описанные здесь

аюсь найти функцию, которая будет переставлять всеуникальный перестановки вектора, не считая сопоставления внутри подмножеств одного и того же типа элемента. Например:

dat <- c(1,0,3,4,1,0,0,3,0,4)

имеет

factorial(10)
> 3628800

возможные перестановки, но только10!/(2!*2!*4!*2!)

factorial(10)/(factorial(2)*factorial(2)*factorial(2)*factorial(4))
> 18900

уникальные перестановки при игнорировании сопоставлений внутри подмножеств одного и того же типа элемента.

Я могу получить это с помощьюunique()&nbsp;иpermn()&nbsp;функция из пакетаcombinat

unique( permn(dat) )

но это в вычислительном отношении очень дорого, так как включает в себя перечислениеn!, что может быть на порядок больше перестановок, чем мне нужно. Есть ли способ сделать это без первых вычисленийn!?