Permute todas las enumeraciones únicas de un vector en R

Estoy tratando de encontrar una función que permute todas lasúnic permutaciones de un vector, sin contar las yuxtaposiciones dentro de subconjuntos del mismo tipo de elemento. Por ejemplo

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

tien

factorial(10)
> 3628800

posibles permutaciones, pero solo10!/(2!*2!*4!*2!)

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

permutaciones únicas al ignorar las yuxtaposiciones dentro de subconjuntos del mismo tipo de elemento.

Puedo obtener esto usandounique() y elpermn() función del paquetecombinat

unique( permn(dat) )

pero esto es computacionalmente muy costoso, ya que implica enumerarn!, que puede ser un orden de magnitud más permutaciones de las que necesito. ¿Hay alguna manera de hacer esto sin calcular primeron!?