如何解决如何将第二个列表中的元素追加到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)),b = list(t = 3,k = 7)),b = list(t = 2,k = 7)))
我尝试使用list_modify(x,y)
软件包中的list_merge(x,!!!y)
和purrr
,但得到错误的结果。
如何在R中执行此操作?
解决方法
在这种情况下,您可以这样做:
result <- lapply(x,function(i) {
if("b" %in% names(i)) i$b <- append(i$b,y$b); i;
})
那样
identical(result,z)
#> [1] TRUE
,
它不是特别优雅,但是您可以使用循环来完成此操作。循环遍历x
中的元素,在其中,y
中的元素。如果x
中有一个元素与y
中的元素同名,则这两个元素在z
中串联在一起,否则,z
就是{{1} }。根据实际问题的严重程度,这可能太慢了,也许有人可以提供一个整齐的选择。
x
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。