My understanding is that
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?
Leave an answer