我正在尝试找到一种将函数应用于列表组合的简明方法-可能会进行并行计算。在我看来,purrr包中的cross()函数无法返回列表作为输出。
我尝试了嵌套的lapply。
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年的时间。