这对我来说似乎很简单,但不幸的是我找不到简单的解决方案。我想将一个列表的每个命名元素附加到另一个列表的相同命名元素 - 保留命名列表结构。我不是在寻找硬编码的解决方案。我下面的方法给出了正确的结构,但没有给出正确的名称。
ls1 <- list(a = list(1:3, 1:3), b = list(1:3, 1:3))
ls2 <- list(a = 4:6, b = 4:6)
# desised output
list(a = list(1:3, 1:3, 4:6), b = list(1:3, 1:3, 4:6))
#> $a
#> $a[[1]]
#> [1] 1 2 3
#>
#> $a[[2]]
#> [1] 1 2 3
#>
#> $a[[3]]
#> [1] 4 5 6
#>
#>
#> $b
#> $b[[1]]
#> [1] 1 2 3
#>
#> $b[[2]]
#> [1] 1 2 3
#>
#> $b[[3]]
#> [1] 4 5 6
# my attempt
lapply(names(ls1), function(name) c(ls1[[name]], ls2[name]))
#> [[1]]
#> [[1]][[1]]
#> [1] 1 2 3
#>
#> [[1]][[2]]
#> [1] 1 2 3
#>
#> [[1]]$a
#> [1] 4 5 6
#>
#>
#> [[2]]
#> [[2]][[1]]
#> [1] 1 2 3
#>
#> [[2]][[2]]
#> [1] 1 2 3
#>
#> [[2]]$b
#> [1] 4 5 6
由reprex 包(v1.0.0)于 2021 年 3 月 13 日创建
您可以使用Map
:
Map(function(x, y) c(x, list(y)), ls1, ls2[names(ls1)])
#$a
#$a[[1]]
#[1] 1 2 3
#$a[[2]]
#[1] 1 2 3
#$a[[3]]
#[1] 4 5 6
#$b
#$b[[1]]
#[1] 1 2 3
#$b[[2]]
#[1] 1 2 3
#$b[[3]]
#[1] 4 5 6
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句