В R, как объединить компонентные два списка, компоненты которых имеют одинаковые имена?

вот мои данные:

l1 <- list(a=1, b=2)
l2 <- list(a=10, b=20)

Я хочу комбинировать их по-компонентному. Например, если я хочу добавить значения каждого компонента l1 к значениям одного и того же компонента в l2, я бы сделал:

l <- list(a=l1$a+l2$a, b=l1$b+l2$b)

Если теперь у меня есть несколько компонентов, я могу сделать:

l <- list()
for(c in names(l1))
 l[[c]] <- l1[[c]] + l2[[c]]

Однако в моих списках может быть много компонентов, и мне может понадобиться сделать это с более чем двумя списками (каждый из которых всегда имеет те же имена компонентов, что и другие).

Поскольку циклы for for не рекомендуются в R, есть ли способ сделать это, используя что-то вроде lapply, или merge, или...?

Спасибо!

1 ответ

Кажется, что вы ищете Map:

identical(l, Map("+", l1, l2))
# [1] TRUE

Это то же самое, что:

mapply("+", l1, l2, SIMPLIFY=FALSE)

licensed under cc by-sa 3.0 with attribution.