Применить функцию ко всем комбинациям двух списков в R - PullRequest
0 голосов
/ 04 июля 2019

Я пытаюсь найти краткий способ применения функции к комбинациям списков - с возможным расширением параллельных вычислений. Мне кажется, что функция cross () из пакета purrr не может возвращать списки в качестве вывода.

Я попробовал вложенное приложение.

data1 <- list(a = xts(rep(2, 10), as.Date(1:10)), b = xts(rep(3, 10), as.Date(1:10)), c = xts(rep(4, 10), as.Date(1:10)))
data2 <- list(a = xts(rep(1.5, 10), as.Date(1:10)), b = xts(rep(2.5, 10), as.Date(1:10)), c = xts(rep(3.5, 10), as.Date(1:10)), d = xts(rep(4.5, 10), as.Date(1:10)))
data <- lapply(data1, function(x) lapply(data2, function(y) y+x))
data <- rlist::list.flatten(data)
sapply(data, first)
# similar to
# outer(c(2,3,4), c(1.5,2.5,3.5,4.5), '+')
# but returns new lists as output

Оптимальным вариантом будет быстрое параллельное решение. Мои настоящие списки содержат около 2000 элементов каждый, и каждый xts в нем составляет около 15 лет.

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