On 12/14/2009 10:50 AM, baptiste auguie wrote:

Hi,

Try this,

apply(expand.grid(letters[1:3], letters[24:26]), 1, paste,collapse="")
[1] "ax" "bx" "cx" "ay" "by" "cy" "az" "bz" "cz"

This will be faster, as it takes advantage of the vectorized paste:

cpaste <- function(...) paste(..., sep = "" )
do.call( cpaste, expand.grid(letters[1:3], letters[24:26]) )

Romain

> system.time( do.call( cpaste, expand.grid(letters[1:26], letters[1:26]) ) )
   user  system elapsed
  0.002   0.000   0.002
> system.time( apply(expand.grid(letters[1:26], letters[1:26]), 1, paste,collapse="") )
   user  system elapsed
  0.015   0.000   0.018

Does not make too much difference on the OP example:

glue <- function( ... ){
  cpaste <- function(...) paste(..., sep = "" )
  do.call( cpaste, do.call( expand.grid, list(...) ) )
}

GLUE <- function(...){
        apply( do.call( expand.grid, list(...) ), 1, paste, collapse = "" )
}


system.time( glue( A = c("a","b","c"), B = c("x", "y", "z"), C = c("l", "m", "n"), D = c("p","q","r"), E = c("s", "t", "u") ) )
   user  system elapsed
  0.002   0.000   0.002
> system.time( GLUE( A = c("a","b","c"), B = c("x", "y", "z"), C = c("l", "m", "n"), D = c("p","q","r"), E = c("s", "t", "u") ) )
   user  system elapsed
  0.008   0.000   0.008



?expand.grid

HTH,

baptiste

2009/12/14 Amelia Livington<amelia_living...@yahoo.com>:

Dear R helpers,

I am working on the scenario analysis pertaining to various interest rates. In 
this connection I need to form the various combinations as under :

Suppose I have two sets A = (a, b, c) and B = (x,y,z)

Then I can easily form the cominations as
(ax, ay, az, bx, by, bz, cx, cy, cz)

However, if I have say 5 variables, then total no of possible combinations will 
be 3^5 = 243.
Thus, A = (a,b,c), B = (x, y, z), C = (l, m, n), D = (p,q,r), E = (s, t, u). 
Then may be my possble combination will start as (a, x, l, p, s), then next 
combination may be (a, x, l, p, u) and so on. The last combination (243rd in 
this case) may be (c, z, n, r, u) or something like this.

In R, is there any way to list all these 3^5 = 243 combinations?

Amelia



--
Romain Francois
Professional R Enthusiast
+33(0) 6 28 91 30 30
http://romainfrancois.blog.free.fr
|- http://tr.im/HlX9 : new package : bibtex
|- http://tr.im/Gq7i : ohloh
`- http://tr.im/FtUu : new package : highlight

______________________________________________
R-help@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.

Reply via email to