You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何合并列表中同class标识的嵌套tibble数据列?

按Class合并嵌套Tibble列表的解决方案

需求说明

现有列表b,其每个元素均为包含class标识列与嵌套tibble列data的tibble。需要按class标识合并所有列表元素中的对应数据列,将同一class下的datatibble进行行绑定,且代码需适配数量未知的多列表元素。此前使用b |> reduce(inner_join, by = "class")会将data列拆分为多列,无法实现需求。

原代码示例

a = list(
  mtcars %>% as_tibble() %>% select(mpg, cyl, disp) |> sample_n(5), 
  mtcars %>% as_tibble() %>% select(mpg, cyl, disp) |> sample_n(5)
) 

b = a %>% 
  map(~ mutate(.x, class = floor(runif(nrow(.x), 0, 2)))) %>%
  map(~ nest(.x, -class))

解决方案代码

library(tidyverse)

# 合并列表b的所有元素,按class分组后绑定对应data列
result <- b %>%
  bind_rows() %>%
  group_by(class) %>%
  summarise(data = list(bind_rows(data)), .groups = "drop")

代码解释

  • bind_rows():将列表b中的所有tibble纵向拼接,把分散在各个列表元素里的class和data行整合到同一个tibble中。
  • group_by(class):按class字段分组,确保同一class的所有datatibble被归为一组。
  • summarise(data = list(bind_rows(data))):对每个分组,用bind_rows()将组内所有嵌套的datatibble合并为一个,再用list()包裹以保持嵌套结构;.groups = "drop"用于取消分组状态,得到最终的扁平化分组结果。

此方案无需提前知道列表b的元素数量,可适配任意多的列表元素。

内容的提问来源于stack exchange,提问作者philipp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 17:25:49