vec_expand_grid: Create a data frame from all combinations of the inputs

View source: R/expand.R

vec_expand_gridR Documentation

Create a data frame from all combinations of the inputs


vec_expand_grid() creates a new data frame by creating a grid of all possible combinations of the input vectors. It is inspired by expand.grid(). Compared with expand.grid(), it:

  • Produces sorted output by default by varying the first column the slowest, rather than the fastest. Control this with .vary.

  • Never converts strings to factors.

  • Does not add additional attributes.

  • Drops NULL inputs.

  • Can expand any vector type, including data frames and records.


  .vary = "slowest",
  .name_repair = "check_unique",
  .error_call = current_env()



Name-value pairs. The name will become the column name in the resulting data frame.


One of:

  • "slowest" to vary the first column slowest. This produces sorted output and is generally the most useful.

  • "fastest" to vary the first column fastest. This matches the behavior of expand.grid().


One of "check_unique", "unique", "universal", "minimal", "unique_quiet", or "universal_quiet". See vec_as_names() for the meaning of these options.


The execution environment of a currently running function, e.g. caller_env(). The function will be mentioned in error messages as the source of the error. See the call argument of abort() for more information.


If any input is empty (i.e. size 0), then the result will have 0 rows.

If no inputs are provided, the result is a 1 row data frame with 0 columns. This is consistent with the fact that prod() with no inputs returns 1.


A data frame with as many columns as there are inputs in ... and as many rows as the prod() of the sizes of the inputs.


vec_expand_grid(x = 1:2, y = 1:3)

# Use `.vary` to match `expand.grid()`:
vec_expand_grid(x = 1:2, y = 1:3, .vary = "fastest")

# Can also expand data frames
  x = data_frame(a = 1:2, b = 3:4),
  y = 1:4

vctrs documentation built on May 29, 2024, 11:39 a.m.