Сокращайте списки путем поэлементного суммирования в мурлыкании

Я пытаюсь использовать purrr для суммирования элементов списка с тем же индексом. Это может быть достигнуто в базе R, используя следующее:

xx <- list(a = c(1,2,3,4,5), b = c(1,2,3,4,5))
Reduce("+", xx)

которая обеспечивает:

[1]  2  4  6  8 10

Большой! Это то, что мне нужно, но я хочу сделать это за purrr. %>% reduce(sum) возвращает одно значение. Кто-нибудь знает синтаксис для этого в purrr?

Edit - Я забыл указать, это должно работать для n списков.

Дэн


person Zafar    schedule 11.04.2017    source источник
comment
%>% не является базовым оператором R. Это часть пакета magrittr. База R будет Reduce("+", xx) или do.call("+", xx).   -  person lmo    schedule 11.04.2017
comment
Комментарий бесполезный, но тем не менее я отредактировал свой вопрос.   -  person Zafar    schedule 11.04.2017
comment
Я не собираюсь троллить, но обратите внимание, что первоначальное утверждение в теге R говорит, что R - это бесплатный язык программирования с открытым исходным кодом и программная среда для статистических вычислений, биоинформатики и графики. Пожалуйста, дополните свой вопрос минимально воспроизводимым примером. Используйте dput () для данных и укажите все небазовые пакеты с вызовами библиотек.   -  person lmo    schedule 11.04.2017


Ответы (1)


Вы можете сделать (s. ?reduce):

   xx %>% reduce(`+`)
   [1]  2  4  6  8 10
person erc    schedule 11.04.2017
comment
Это красиво, свекла ... Мне интересно, почему это работает, а xx %>% reduce(sum) нет? Этот второй вариант суммирует все значения в одно, а не по позиции ... - person Javier Fajardo; 09.03.2018
comment
@JavierFajardo as sum сначала суммирует значения каждого из двух списков, осталось только два значения до reduce (15 + 15 = 30). - person erc; 12.03.2018