[R] combinations

Robin Hankin r.hankin at auckland.ac.nz
Thu Nov 7 21:58:54 CET 2002


Hello Michaell


I've just written this, but it's a bit cranky.  I expect some guru
will improve my clunky eval(parse()) construction [and, come to think
of it, the equally clunky sapply() construction].


all the best 


robin


R> combinations(1:6,3)

should work, if


combinations <- function(vector,n) {
  bit <- c(0,1)
  string <- "binary <- expand.grid(bit"
  for(i in vector[-1]) {
    string <- paste(string,",bit")
  }
  string <- paste(string,")")

  eval(parse(text=string))
  wanted <- apply(binary,1,sum)==n
  binary <- binary[wanted,]>0

  f <- function(n){vector[binary[n,]]}
  return(t(sapply(1:dim(binary)[1],f)))
  }




> 
> 
> I need to construct all possible combinations of an vector of length N taken
> X at a time for simulation purposes.  Taking a a small vector as an example:
> 
> 
> >input <- c('a','b','c','d')
> >somefunction(input)
> a,b,c
> a,b,d
> a,c,d
> b,c,d
> 
> my only solution thus far is:
> 
> somefunction <- function(x){
>       ...a series of grotesque and horribly inefficient loops
>       deleted to save face.
>       }
> 
> For my purposes, N=20 and X=5, meaning there are about 15k combinations.
> 
> I assumed this might be a common problem, but I am coming up empty on my searches
> of the usual suspect web sites.
> 
> Thanks in advance for any pointers anyone may have.
> 
> Michaell


-- 

Robin Hankin, Lecturer,
School of Geography and Environmental Science
Tamaki Campus
Private Bag 92019 Auckland
New Zealand

r.hankin at auckland.ac.nz
tel 0064-9-373-7599 x6820; FAX 0064-9-373-7042

as of: Fri Nov  8 09:53:00 NZDT 2002
This (linux) system up continuously for:  435 days, 15 hours, 35 minutes
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
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
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._



More information about the R-help mailing list