all possible combinations of list elements

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

all possible combinations of list elements

Eberhard F Morgenroth
I have a list as follows

P <- list(A  = c("CS", "CX"),
          B  = 1:4,
          Y  = c(4, 9))

I now would like to prepare a new list where the rows of the new list
provide all possible combinations of the elements in the orginal list.
Thus, the result should be the following

CS 1 4
CS 1 9
CS 2 4
CS 2 9
CS 3 4
CS 3 9
CS 4 4
CS 4 9
CX 1 4
CX 1 9
CX 2 4
CX 2 9
CX 3 4
CX 3 9
CX 4 4
CX 4 9

Is there a simple routine in R to create this list of all possible
combinations? The routine will be part of a function with the list "P"
as an input. "P" will not always have the same number of elements and
each element in the list "P" may have different numbers of values.

Thanks,
Eberhard Morgenroth
____________________________________________________________________
Eberhard Morgenroth, Assistant Professor of Environmental Engineering
University of Illinois at Urbana-Champaign
3219 Newmark Civil Engineering Laboratory, MC-250
205 North Mathews Avenue, Urbana, IL 61801, USA
Email: [hidden email]
http://cee.uiuc.edu/research/morgenroth

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Reply | Threaded
Open this post in threaded view
|

Re: all possible combinations of list elements

Marc Schwartz (via MN)
On Tue, 2006-01-03 at 18:57 -0600, Eberhard F Morgenroth wrote:

> I have a list as follows
>
> P <- list(A  = c("CS", "CX"),
>           B  = 1:4,
>           Y  = c(4, 9))
>
> I now would like to prepare a new list where the rows of the new list
> provide all possible combinations of the elements in the orginal list.
> Thus, the result should be the following
>
> CS 1 4
> CS 1 9
> CS 2 4
> CS 2 9
> CS 3 4
> CS 3 9
> CS 4 4
> CS 4 9
> CX 1 4
> CX 1 9
> CX 2 4
> CX 2 9
> CX 3 4
> CX 3 9
> CX 4 4
> CX 4 9
>
> Is there a simple routine in R to create this list of all possible
> combinations? The routine will be part of a function with the list "P"
> as an input. "P" will not always have the same number of elements and
> each element in the list "P" may have different numbers of values.

See ?expand.grid

> expand.grid(P)
    A B Y
1  CS 1 4
2  CX 1 4
3  CS 2 4
4  CX 2 4
5  CS 3 4
6  CX 3 4
7  CS 4 4
8  CX 4 4
9  CS 1 9
10 CX 1 9
11 CS 2 9
12 CX 2 9
13 CS 3 9
14 CX 3 9
15 CS 4 9
16 CX 4 9

HTH,

Marc Schwartz

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html