[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