[R] permutations in R

Daniel Viar dan.viar at gmail.com
Sat Mar 14 04:33:18 CET 2009


Try this:

> # Taken from combinations(gtools)
> # library(gregmisc)
> # Function permutations
> fn_perm_list <-
+ function (n, r, v = 1:n)
+ {
+    if (r == 1)
+       matrix(v, n, 1)
+    else if (n == 1)
+       matrix(v, 1, r)
+    else {
+       X <- NULL
+       for (i in 1:n) X <- rbind(X, cbind(v[i], fn_perm_list(n -
+            1, r - 1, v[-i])))
+        X
+    }
+ }
>
> fn_perm_list(3,3)
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    1    3    2
[3,]    2    1    3
[4,]    2    3    1
[5,]    3    1    2
[6,]    3    2    1

Note that the you can use library gregmisc without using this
function, but I thought it might be instructive for you to see how
this is done.

Here's how you would normally do this:
> library(gregmisc)
> permutations(3,3)
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    1    3    2
[3,]    2    1    3
[4,]    2    3    1
[5,]    3    1    2
[6,]    3    2    1

Cheers,
Dan Viar


On Fri, Mar 13, 2009 at 8:06 PM, onyourmark <william108 at gmail.com> wrote:
>
> Hi. Does anyone know of a function which will take as input a number n (or a
> let of n letters) and will give out, one at a time, the permutations of n
> (or of those n letters) as a vector?
> So that I can use the permutations one at a time. And such that it will
> exhaust all the permutations with no repeats.
>
> For example if n is 3, I would want a function which I could use in a loop
> and the first time I use it in the loop it may give the vector
> 123
> and then the next time in the loop it may give
> 132
> and so on so that after 6 iterations through the loop I would get all 6
> permutations of 123.
>
> Thank you.
> --
> View this message in context: http://www.nabble.com/permutations-in-R-tp22507989p22507989.html
> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>




More information about the R-help mailing list