28

名前付き要素を持つ2つのリストがあります。

a <- list(a=1, b=2)
b <- list(b=3, c=4)

これらのリストを組み合わせて、同じ名前を持つaの要素がリストbによって上書きされるようにしたいので、次のようにします。

list(a=1, b=3, c=4)

私はこれをループで行うことができることを知っていますが、Rでこれを行うためのよりコンパクトな方法はありますか?

4

2 に答える 2

54

Rにはそれを行うための組み込み関数がありますmodifyList

modifyList(a, b)
于 2013-01-22T12:07:08.233 に答える
8

簡単な解決策は次のとおりです。

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

# remove list element(s)
newlist[!duplicated(names(newlist), fromLast = TRUE)]

結果:

$a
[1] 1

$b
[1] 3

$c
[1] 4

を使用したさらに単純なソリューションsetdiff:

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

$a
[1] 1

$b
[1] 3

$c
[1] 4
于 2013-01-22T09:32:35.333 に答える