我想知道是否有一种简单的方法来组合 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/