r - 如何组合rapply()和mapply(),或者如何递归使用mapply/Map?

标签 r multidimensional-array mapreduce nested mapply

我想知道是否有一种简单的方法来组合 rapply( , how = "replace") 的功能和 mapply() ,为了使用 mapply()在嵌套列表上递归。

例如,我有两个嵌套列表:

A = list(list(c(1,2,3), c(2,3,4)), list(c(4,3,2), c(3,2,1)))
B = list(list(c(1,2,3), c(2,3,4)), list(c(4,3,2), c(3,2,1)))

假设我想申请 function(x, y) x + y到 A 和 B 中的所有相应元素并保留嵌套结构。想要的结果是
result = list(list(c(2,4,6), c(4,6,8)), list(c(8,6,4), c(6,4,2)))

我认为这应该是 mapply() rapply(x, f, how = "replace") 的类似物,但不知道如何整合它们。任何人都可以给我一些指示吗?

另一个快速问题是,对于密集计算、嵌套列表或多维数组,哪个通常更快?任何意见都非常感谢!

最佳答案

或者你可以写一个递归函数结合 Map为了实现这一点,只要 A 和 B 具有相同的结构,它就可以工作:

s <- function(x, y) tryCatch(x + y, error = function(e) Map(s, x, y))
s(A, B)

[[1]]
[[1]][[1]]
[1] 2 4 6

[[1]][[2]]
[1] 4 6 8


[[2]]
[[2]][[1]]
[1] 8 6 4

[[2]][[2]]
[1] 6 4 2

不确定您是否可以使用 rapply在这种情况下,它递归地遍历单个列表。但是为了同时递归遍历两个列表,您需要更高级别的递归吗?我错了吗?

关于r - 如何组合rapply()和mapply(),或者如何递归使用mapply/Map?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37906958/

相关文章:

javascript - 将多维输入转换为 JavaScript 对象

python - numpy reshape()和transpose()之间有交互规则吗?

hadoop - 在 Hive 中获取 sysdate -1

r - 将表达式捕获为 R 中的函数体

debugging - 列出在 R 中设置了调试标志的函数

python - 访问多维数组中的坐标 - python

perl - 将 Hadoop 流与 perl 结合使用以进行 map reduce

r - glmnet 模型性能与 boosting 算法的比较

lm 使用插入符号火车的结果

Hadoop mapreduce 出现 "Cannot resolve the host name"错误