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_livington at 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