首页 > 解决方案 > 如何将第二个列表中的元素附加到R中第一个列表中的现有元素

问题描述

我有两个列表 x 和 y:

x <- list(id1 = list(a = list(t = 5)), id2 = list(a = list(t = 1), b = list(t = 3)), id3 = list(a = list(t = 1), b = list(t = 2)))

y <- list(b = list(k = 7))

我需要修改 x 列表并从 y 列表中添加相应的“b”元素以获得 z 列表:

z <- list(id1 = list(a = list(t = 5)), id2 = list(a = list(t = 1), b = list(t = 3, k = 7)),
  id3 = list(a = list(t = 1), b = list(t = 2, k = 7)))

我尝试使用list_modify(x, y)and list_merge(x, !!!y)from purrrpackage 但得到错误的结果。如何在 R 中做到这一点?

标签: rpurrr

解决方案


在这种情况下,您可以这样做:

result <- lapply(x, function(i) {
  if("b" %in% names(i)) i$b <- append(i$b, y$b); i;
  })

这样

identical(result, z)
#> [1] TRUE

推荐阅读