在R中覆盖具有相同名称的值时组合列表

Joa*_*org 21 r

我有两个带有命名元素的列表:

a <- list(a=1, b=2)
b <- list(b=3, c=4)
Run Code Online (Sandbox Code Playgroud)

我想组合这些列表,以便具有相同名称的任何元素都将被列表b覆盖,所以我得到了这个:

list(a=1, b=3, c=4)
Run Code Online (Sandbox Code Playgroud)

我知道我可以循环执行此操作,但是在R中有更简洁的方法吗?

Ram*_*ath 42

R具有内置功能 modifyList

modifyList(a, b)
Run Code Online (Sandbox Code Playgroud)

  • Base R有很多好东西.尝试`help(package ="base")`每次启动R并学习5个函数:-) (8认同)

Sve*_*ein 6

这是一个简单的解决方案:

# create new list
newlist <- c(a,b)

# remove list element(s)
newlist[!duplicated(names(newlist), fromLast = TRUE)]
Run Code Online (Sandbox Code Playgroud)

结果:

$a
[1] 1

$b
[1] 3

$c
[1] 4
Run Code Online (Sandbox Code Playgroud)

一个更简单的解决方案setdiff:

c(a[setdiff(names(a), names(b))], b)

$a
[1] 1

$b
[1] 3

$c
[1] 4
Run Code Online (Sandbox Code Playgroud)