R语言cur_data弃用后,如何生成含分组数据框列的汇总表?
替代
cur_data()实现分组存数据框的方案 原代码中dplyr::cur_data()即将被弃用,你可以用以下两种方法实现相同效果:
方法1:指定排除分组列
直接用pick(-col_a)选择除分组列外的所有列,再包裹成列表:
df <- data.frame(col_a = c("a","a","b","c","c"), col_b=c(1,2,3,4,5), col_c=c("q","w","e","r","t")) dfdata <- df %>% dplyr::group_by(col_a) %>% dplyr::summarise(data = list(pick(-col_a)), .groups = "drop") # 输出结果 dfdata # A tibble: 3 × 2 col_a data <chr> <list> 1 a <tibble [2 × 2]> 2 b <tibble [1 × 2]> 3 c <tibble [2 × 2]> dfdata$data[[1]] # A tibble: 2 × 2 col_b col_c <dbl> <chr> 1 1 q 2 2 w
方法2:通用适配任意分组列
如果不确定分组列名称,或者分组列有多个,用group_cols()自动识别分组列,再排除:
dfdata <- df %>% dplyr::group_by(col_a) %>% dplyr::summarise(data = list(pick(-group_cols())), .groups = "drop")
说明
cur_data()原本的作用是返回当前分组中除分组列外的所有列,官方推荐用pick(-group_cols())作为替代,这种写法更灵活,能适配任意数量和名称的分组列,效果和原代码完全一致。
内容的提问来源于stack exchange,提问作者user24121995
相关产品推荐
相关产品推荐

