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

Uwe Ligges ligges at statistik.uni-dortmund.de
Sat May 3 15:23:59 CEST 2003


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.
> 
> -- Giovanni


It depends on the number of arguments, because of the implementation 
(look into the code):

In principle, expand.grid(x = c("b", "a")) does the following:

  x <- c("b", "a")
  factor(x)

whereas for expand.grid(x = c("b", "a"), y = c(1, 2)), the levels will 
be specified as in:

  factor(x, levels = unique(x))

Hence the difference.


Uwe Ligges



More information about the R-help mailing list