[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