r - 在R中的索引上组合列表
问题描述
我有两个清单:
# agg blocks don't need methods
list_1 <- list(
foo = list(list(txt = "MEAN", val= "NONE")),
foo = list(list(txt = "MEAN", val= "Week 54")),
foo = list(list(txt = "FREQ", df= "df"))
)
#
list_2 <- list(
foo = list(list(txt = "TEXT", df = "df_1")),
foo = list(list(txt = "SAMPLE ", df = "df_2")),
foo = list(list(txt = "OTHER", df = "df_1"))
)
如何创建将val
s附加list_1
到的第三个列表list_2
期望的输出
list_3 <- list(
foo = list(list(txt = "TEXT", df = "df_1", val = "NONE")),
foo = list(list(txt = "SAMPLE ", df = "df_2", val = "Week 54")),
foo = list(list(txt = "OTHER", df = "df_1"))
)
$foo
$foo[[1]]
$foo[[1]]$txt
[1] "TEXT"
$foo[[1]]$df
[1] "df_1"
$foo[[1]]$val
[1] "NONE"
$foo
$foo[[1]]
$foo[[1]]$txt
[1] "SAMPLE "
$foo[[1]]$df
[1] "df_2"
$foo[[1]]$val
[1] "Week 54"
$foo
$foo[[1]]
$foo[[1]]$txt
[1] "OTHER"
$foo[[1]]$df
[1] "df_1"
请注意,缺少一些列表元素,val
但两个列表的长度始终相同
解决方案
我们可以使用嵌套的Map
. 用循环遍历外部list
,Map
然后从 中提取 'val' 组件inner
list
并将其分配给 second 的相应元素list
out <- Map(function(lst1, lst2) Map(c, lst2, val =
lapply(lst1, `[[`, 'val')), list_1, list_2)
-检查OP的预期
all.equal(out, list_3)
#[1] TRUE
推荐阅读
- python - LightFM train_interactions 在训练集和测试集之间共享:这将导致评估不正确,请检查您的数据拆分
- java - XML 文档结构必须在同一个实体内开始和结束
- php - 我正在使用准备好的语句在 PHP 中发出 SQL 请求,但出现错误
- docker - kubernetes - GCP - 无法连接到 https://collector.newrelic.com
- c++ - 读取帧缓冲区对象的深度缓冲区
- angular - 基于另一个数据的角度离子解析/显示数据
- azure - Flutter Azure 人脸 API
- android - Android 传感器数据到 Cloud pubsub
- html - bootstrap-4 并排卡宽度响应问题
- amazon-cloudformation - CFT 到 CDK 迁移 - 如何从 CDK 代码引用 CFT 创建的对象