Group/summarize 在嵌套的 tibble 上追加列列表

Group/summarize on nested tibble to append column lists

我对列表的列表列很感兴趣。在下面的例子中,列表是每个碳齿轮组合的唯一模型。

my_df <- mtcars %>%
  rownames_to_column('model') %>%
  as_tibble() %>%
  select(model, gear, carb) %>%
  group_by(carb, gear) %>%
  summarise(models = list(unique(model)))

# A tibble: 11 × 3
# Groups:   carb [6]
    carb  gear models   
   <dbl> <dbl> <list>   
 1     1     3 <chr [3]>
 2     1     4 <chr [4]>
 3     2     3 <chr [4]>
 4     2     4 <chr [4]>
 5     2     5 <chr [2]>
 6     3     3 <chr [3]>
 7     4     3 <chr [5]>
 8     4     4 <chr [4]>
 9     4     5 <chr [1]>
10     6     5 <chr [1]>
11     8     5 <chr [1]>

现在假设我想将唯一模型汇总为每个齿轮的唯一模型。我希望做类似下面的事情,但它似乎并不尊重这些团体。

my_df %>%
  group_by(gear) %>%
  summarise(models = map(models, c))

我希望结果如下所示:

# A tibble: 3 × 2
# Groups:   gear [3]
    gear models    
   <dbl> <list>   
 1     3 <chr [15]>
 2     4 <chr [12]>
 3     5 <chr [5]>

您可以 unlist models 将它们放在一个向量中,然后再次将其存储在 list 中。

library(dplyr)
my_df %>% group_by(gear) %>% summarise(models = list(unlist(models)))

#   gear models    
#  <dbl> <list>    
#1     3 <chr [15]>
#2     4 <chr [12]>
#3     5 <chr [5]>