permutations in R
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.