R sum векторов в списке списка - PullRequest
3 голосов
/ 05 февраля 2020

У меня есть список списков с векторами. Его можно сгенерировать с помощью

test <- lapply(1:10, function(x){
    list(a=sample(1:5,5),b=sample(1:5,5),c=sample(1:10,5))
})

Теперь у меня есть 10 списков списков, содержащих a, b и c. Я хочу сложить все a, b и c, так что в итоге я получаю список всего a, b и c. Как мне сделать это эффективно? Мои реальные данные намного больше, и я хочу ускорить их. Я хочу что-то похожее на это. Обратите внимание, что цифры здесь неверны.

1 Ответ

3 голосов
/ 05 февраля 2020

Мы можем transpose list и reduce от +

library(purrr)
library(dplyr)
transpose(test) %>% 
      map(reduce, `+`)
#$a
#[1] 35 19 30 33 33

#$b
#[1] 30 27 29 35 29

#$c
#[1] 46 53 59 67 62

ПРИМЕЧАНИЕ: set.seed не было. Таким образом, результаты могут отличаться

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...