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

如何用简洁语法(优先tidyverse)合并结构相同的嵌套列表元素?

优雅合并结构一致的嵌套列表对应元素

问题场景

给定一个包含多个结构一致内层列表的嵌套列表,每个内层列表的元素为字符向量,需要将各内层列表的同名对应元素用c()函数合并,得到目标列表。

输入示例

input_list <- list(
  list(one = "a", 
       two = "b", 
       three = "c"), 
  list(one = "d", 
       two = c("e", "f"), 
       three = "g")
)

期望输出

list(
  one = c("a", "d"),
  two = c("b", "e", "f"),
  three = c("c", "g")
)

解决方案

1. tidyverse 一行实现(优先推荐)

利用purrr包的transpose()翻转列表层级,再用map()批量调用c()合并元素:

library(tidyverse)
input_list %>% transpose() %>% map(c)

原理说明:

  • transpose()将原嵌套列表的层级翻转,把所有内层列表中one、two、three这类同名元素分别聚合为子列表;
  • map(c)对每个聚合后的子列表执行c()函数,完成元素的合并。

2. 基础R 一行实现

无需加载额外包,用do.call()配合Map()完成:

do.call(Map, c(f = c, input_list))

原理说明:

  • Map(c, ...)会按名称匹配输入列表的对应元素,逐个用c()合并;
  • do.call()将input_list的所有内层列表作为参数传递给Map,实现批量处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 15:53:19