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.