Skip to content
Prev 4056 / 398506 Next

Combinations

Alex:  Bill Venables sent me these functions in response to a similar
query of mine a few months ago (you can find the full reply by searching
the R archives under the heading "avoiding loops, gaining generality"):


subsets <- function(r, n, v = 1:n) 
  if(r <= 0) NULL else 
if(r >= n) v[1:n] else 
rbind(cbind(v[1], Recall(r - 1, n - 1, v[-1])),      
Recall(r, n - 1, v[-1])) 

permutations <- function(n, v = 1:n) { 
 if(n == 1) 
   return(v[1])   
 X <- NULL 
  for(i in 1:n) 
    X <- rbind(X, 
               cbind(v[i], permutations(n - 1, v[-i]))) 
  X
} 

Hope this helps.

Matt
On Mon, 13 Dec 1999, a s wrote:

            
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._