名前付き要素を持つ2つのリストがあります。
a <- list(a=1, b=2)
b <- list(b=3, c=4)
これらのリストを組み合わせて、同じ名前を持つaの要素がリストbによって上書きされるようにしたいので、次のようにします。
list(a=1, b=3, c=4)
私はこれをループで行うことができることを知っていますが、Rでこれを行うためのよりコンパクトな方法はありますか?
名前付き要素を持つ2つのリストがあります。
a <- list(a=1, b=2)
b <- list(b=3, c=4)
これらのリストを組み合わせて、同じ名前を持つaの要素がリストbによって上書きされるようにしたいので、次のようにします。
list(a=1, b=3, c=4)
私はこれをループで行うことができることを知っていますが、Rでこれを行うためのよりコンパクトな方法はありますか?
Rにはそれを行うための組み込み関数がありますmodifyList
modifyList(a, b)
簡単な解決策は次のとおりです。
# 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