[ad_1]

My understanding is that `base::grid.expand()`

and `tidyr::grid_expand()`

will return an object with a row for each unique value of the joint distribution of unique values across one or more vectors. For example, here is what I expect:

```
# Preliminaries
library(tidyr)
set.seed(123)
# Simulate data
df <- data.frame(x = as.factor(rep(c(1,2), 50)), y= as.factor(sample(1:3, 100, replace = T)))
# Expected result
data.frame(x = rep(1:2, 3), y = rep(1:3, 2)) # 6 rows!
```

However, when I actually use the functions, I get many more (duplicated) rows than I expect:

```
# Tidyverse result
tidyr::expand_grid(df) # produces 90 rows!
tidyr::expand_grid(df$x, df$y) # produces 10k rows!
# Base R version
base::expand.grid(df) # produces 10k rows!
base::expand.grid(df$x, df$y) # produces 10k rows!
# Solution...but why do I have to do this?!
unique(base::expand.grid(df))
```

Can someone explain what I am missing about what it is supposed to do?

[ad_2]