Ответ 1
R имеет встроенную функцию для выполнения этого modifyList
modifyList(a, b)
У меня есть два списка с именованными элементами:
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