r - 将函数应用于 R 中两个列表的所有组合
问题描述
我试图找到一种简洁的方法来在列表组合上应用函数 - 可能扩展做并行计算。在我看来,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 年的时间。
解决方案
推荐阅读
- python - 使用 pd.merge 使用参考表填充左侧数据框中的缺失值
- ios - 我应该再次子类化还是可以即时更新约束?
- javascript - 如何在 JavaScript 中将零 (0) 解析为整数
- python-3.x - 如何使用 TensorFlow 对两个 Anaconda 环境进行基准测试?
- verilog - 如何将inout信号连接到输出和输入端口
- python - Tkinter 错误:不能在内部使用几何管理器网格。已经有由包管理的奴隶
- reactjs - 从 FlatList 中删除项目时 UI 未正确更新
- c - MINIX 3 (v3.1.0) 中的参数中缺少类型信息
- bash - 如何在使用 EOF 在远程机器上执行 ssh 时调用其他函数内部的函数?
- c# - 我可以在 UWP 上运行一些 http 服务器吗?