Подтвердить что ты не робот

Объединяйте списки при переопределении значений с тем же именем в R

У меня есть два списка с именованными элементами:

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

Я хочу объединить эти списки, так что любые элементы из a с одинаковыми именами будут перезаписаны списком b, поэтому я получаю следующее:

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

Я знаю, что могу сделать это в цикле, но есть ли более компактный способ сделать это в R?

4b9b3361

Ответ 1

R имеет встроенную функцию для выполнения этого modifyList

modifyList(a, b)

Ответ 2

Здесь простое решение:

# 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