我想将两个命名列表listA
和listB
加入/追加/合并/合并到一个列表(listComplete
)中。如果element在两个列表中,则保留一个,然后丢弃另一个。
让
listA = list(a = 'a', b = 'b')
listB = list(a = 'a_FromListB', c = 'c')
然后我要加入/合并这两个对象
listComplete = list(a = 'a_FromListB', b = 'b', c = 'c')
我尝试使用c
,但这会重复所有元素。我已经读到base::append
只是c
的包装,由于某种原因,我在purrr::append
上遇到错误(名称空间中不存在-我使用的是purrr 0.3.2)。我也尝试过purrr::list_modify
,但这对listB
中元素a
的“嵌套” listA
:
purrr::list_modify(listA, listB )
$a
$a$a
[1] "a_FromB"
$a$c
[1] "c"
$b
[1] "b"
重要的是
a
中的元素listB
,一个好处是对新列表进行排序,使它以listA
开头(其中listB
中的所有元素也都替换为listB
中的值),然后是{{1} }。
我知道我可以编写自己的函数,但这似乎应该是开箱即用的-特别是在listB
中。
答案 0 :(得分:0)
我们可以在两个duplicated
的级联names
上使用list
,然后用它来过滤级联lists
中的元素
c(listA, listB)[!duplicated(c(names(listA), names(listB)), fromLast = TRUE)]
答案 1 :(得分:0)
这是另一种方式:
c(listA,`[<-`(listB, names(listA), value = NULL))
#> $a
#> [1] "a"
#>
#> $b
#> [1] "b"
#>
#> $c
#> [1] "c"