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

如何按元素名称高效逐元素合并两个列表(无循环)

按元素名称高效合并两个列表(无循环实现)

我想找一种无需循环的高效方法,按元素名称合并两个列表。试过用sapply()获取名称的方式,但没得到想要的结果。

示例数据

列表1

mylist1 <- list(region1 = 1:3, region2 = 5:7)
# 输出:
# $region1
# [1] 1 2 3
# 
# $region2
# [1] 5 6 7

列表2

mylist2 <- list(region1 = "#E8C506", region2 = "#F3B508")
# 输出:
# $region1
# [1] "#E8C506"
# 
# $region2
# [1] "#F3B508"

期望结果

mylist3 <- list(region1 = list(1:3, "#E8C506"), region2 = list(5:7, "#F3B508"))
# 输出:
# $region1
# $region1[[1]]
# [1] 1 2 3
# 
# $region1[[2]]
# [1] "#E8C506"
# 
# 
# $region2
# $region2[[1]]
# [1] 5 6 7
# 
# $region2[[2]]
# [1] "#F3B508"

无循环高效实现方法

方法1:用Map()函数

Map()是R原生的多列表元素操作函数,会自动按元素名称匹配,把两个列表里同名的元素打包成子列表,完全满足需求:

mylist3 <- Map(list, mylist1, mylist2)

方法2:tidyverse风格的purrr::map2()

如果你常用tidyverse工具包,purrr的map2()函数效果一致,语法更贴合tidyverse风格:

library(purrr)
mylist3 <- map2(mylist1, mylist2, list)

方法3:用mapply()函数

mapply()是sapply()的多输入版本,记得设置SIMPLIFY = FALSE,避免结果被自动简化:

mylist3 <- mapply(list, mylist1, mylist2, SIMPLIFY = FALSE)

内容的提问来源于stack exchange,提问作者asd-tm

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 16:35:22