[R] expand.grid and the first level of a factor

John Fox jfox at mcmaster.ca
Sat May 3 14:54:45 CEST 2003

Dear Giovanni,

At 12:53 PM 5/3/2003 +0000, Giovanni Marchetti wrote:
>I do not understand this behaviour of expand.grid:
> > expand.grid(x = c("b", "a"), y = c(1, 2))$x
>[1] b a b a
>Levels: b a
> > expand.grid(x = c("b", "a"))$x
>[1] b a
>Levels: a b
>Why the first level of the factor x depends on the number
>of arguments of expand.grid? Apparently, I can set
>the order of the levels only when the number of
>arguments in > 1. In the second example, the order
>is lexicographic.

As the help for expand.grid states, expand.grid generates all combinations 
of values of its arguments. Take a look at the entirety of the result:

 > expand.grid(x = c("b", "a"), y = c(1, 2))
   x y
1 b 1
2 a 1
3 b 2
4 a 2

Compare, for example, to

         expand.grid(x = c("b", "a"), y = c(1, 2), z=c(TRUE, FALSE))

which generates 8 rows.

I hope that this helps,

John Fox
Department of Sociology
McMaster University
Hamilton, Ontario, Canada L8S 4M4
email: jfox at mcmaster.ca
phone: 905-525-9140x23604
web: www.socsci.mcmaster.ca/jfox

More information about the R-help mailing list