Create a tibble from all combinations of inputs

expand_grid(...)

Arguments

...

Name-value pairs. The name will become the column name in the output.

Value

A tibble with one column for each input in .... The output will have one row for each combination of the inputs, i.e. the size be equal to the product of the sizes of the inputs. This implies that if any input has length 0, the output will have zero rows.

Compared to expand.grid

  • Varies the first element fastest.

  • Never converts strings to factors.

  • Does not add any additional attributes.

  • Returns a tibble, not a data frame.

  • Can expand any generalised vector, including data frames.

Examples

expand_grid(x = 1:3, y = 1:2)
#> # A tibble: 6 x 2 #> x y #> <int> <int> #> 1 1 1 #> 2 1 2 #> 3 2 1 #> 4 2 2 #> 5 3 1 #> 6 3 2
expand_grid(l1 = letters, l2 = LETTERS)
#> # A tibble: 676 x 2 #> l1 l2 #> <chr> <chr> #> 1 a A #> 2 a B #> 3 a C #> 4 a D #> 5 a E #> 6 a F #> 7 a G #> 8 a H #> 9 a I #> 10 a J #> # … with 666 more rows
# Can also expand data frames expand_grid(df = data.frame(x = 1:2, y = c(2, 1)), z = 1:3)
#> # A tibble: 6 x 2 #> df$x $y z #> <int> <dbl> <int> #> 1 1 2 1 #> 2 1 2 2 #> 3 1 2 3 #> 4 2 1 1 #> 5 2 1 2 #> 6 2 1 3
# And matrices expand_grid(x1 = matrix(1:4, nrow = 2), x2 = matrix(5:8, nrow = 2))
#> # A tibble: 4 x 2 #> x1[,1] [,2] x2[,1] [,2] #> <int> <int> <int> <int> #> 1 1 3 5 7 #> 2 1 3 6 8 #> 3 2 4 5 7 #> 4 2 4 6 8