[Rd] Combinations and Permutations

Spencer Graves @pencer@gr@ve@ @end|ng |rom prod@y@e@com
Fri Jan 13 16:13:08 CET 2023



On 1/13/23 4:11 AM, Serguei Sokol via R-devel wrote:
> Le 13/01/2023 à 09:00, Dario Strbenac via R-devel a écrit :
>> Good day,
>>
>> In utils, there is a function named combn. It would seem complementary 
>> for utils to also offer permutations because of how closely 
>> mathematically related they are to each other. Could permutations be 
>> added to save on a package dependency if developing a package?
> If you need a function returning a matrix with all permutations of a 
> vector x in its columns, a simple recursive one-liner can be sufficient, 
> no need for a whole package dependency for this:
> 
>     perm=function(x) {n=length(x); f=factorial(n); if (n>1) 
> structure(vapply(seq_along(x), function(i) rbind(x[i], perm(x[-i])), 
> x[rep(1L, f)]), dim=c(n, f)) else x}
> 
> It works for all king of vectors (integer, numeric, character, ...):
> 
>     perm(1:3)
>     perm(pi*1:3)
>     perm(letters[1:3])
> 
> Obviously, a particular attention should be brought to the size of x 
> (referred here as n) as the column number in the returned matrix growths 
> as n!.. E.g. 8!=40320. So growths the cpu time too.


	  What about "combinat::permn"?


	  Spencer Graves

> 
> Hoping it helps,
> Serguei.
> 
>>
>> --------------------------------------
>> Dario Strbenac
>> University of Sydney
>> Camperdown NSW 2050
>> Australia
>> ______________________________________________
>> R-devel using r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-devel
> 
> ______________________________________________
> R-devel using r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel



More information about the R-devel mailing list