R中索引的组合列表

问题描述 投票:1回答:1

我有两个列表:

# 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中的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,但两个列表的长度始终相同

我有两个列表:#agg块不需要方法list_1

r list purrr
1个回答
1
投票

我们可以使用嵌套的Map执行此操作。用list在外部Map上循环,然后从inner list中提取“ val”分量,并将其分配给第二个list]的相应元素

out <- Map(function(lst1, lst2) Map(c, lst2, val =
         lapply(lst1, `[[`, 'val')), list_1, list_2)
© www.soinside.com 2019 - 2024. All rights reserved.