Keywords:
### ** Examples # Chop ============================================================== df <- tibble(x = c(1, 1, 1, 2, 2, 3), y = 1:6, z = 6:1) # Note that we get one row of output for each unique combination of # non-chopped variables df %>% chop(c(y, z))
# A tibble: 3 × 3 x y z <dbl> <list<int>> <list<int>> 1 1 [3] [3] 2 2 [2] [2] 3 3 [1] [1]
# cf nest df %>% nest(data = c(y, z))
# A tibble: 3 × 2 x data <dbl> <list> 1 1 <tibble [3 × 2]> 2 2 <tibble [2 × 2]> 3 3 <tibble [1 × 2]>
# Unchop ============================================================ df <- tibble(x = 1:4, y = list(integer(), 1L, 1:2, 1:3)) df %>% unchop(y)
# A tibble: 6 × 2 x y <int> <int> 1 2 1 2 3 1 3 3 2 4 4 1 5 4 2 6 4 3
df %>% unchop(y, keep_empty = TRUE)
# A tibble: 7 × 2 x y <int> <int> 1 1 NA 2 2 1 3 3 1 4 3 2 5 4 1 6 4 2 7 4 3
# Incompatible types ------------------------------------------------- # If the list-col contains types that can not be natively df <- tibble(x = 1:2, y = list("1", 1:3)) try(df %>% unchop(y))
Error in list_unchop(x = x, indices = indices, ptype = ptype, name_spec = name_spec, : Can't combine `x[[1]]` <character> and `x[[2]]` <integer>.
# Unchopping data frames ----------------------------------------------------- # Unchopping a list-col of data frames must generate a df-col because # unchop leaves the column names unchanged df <- tibble(x = 1:3, y = list(NULL, tibble(x = 1), tibble(y = 1:2))) df %>% unchop(y)
# A tibble: 3 × 2 x y$x $y <int> <dbl> <int> 1 2 1 NA 2 3 NA 1 3 3 NA 2
df %>% unchop(y, keep_empty = TRUE)
# A tibble: 4 × 2 x y$x $y <int> <dbl> <int> 1 1 NA NA 2 2 1 NA 3 3 NA 1 4 3 NA 2