我知道嵌套的lapply函数可以替换为rapply,如下所示
对于3级嵌套列表:
lapply(data,function(x) lapply(x,function(x) lapply(x,function(x)funca(x))))
相当于
rapply(data, function(x) sum(x),how = "list")
PS:如果我对lapply和rapply的理解是错误的,请纠正我
#
现在我有一个场景,我必须为同一个3级嵌套列表编写mapply,如下所示
mapply(function(x,y) mapply(function(x,y) mapply(function(x,y) funcb(x,y),x,y),x,y),data1,data2,SIMPLIFY=FALSE)
我可以用单个mapply替换它(即)mapply具有rapply的固有属性还是有任何其他等效函数可用
我尝试用单个mapply替换它,它给了我一个稍微不同的结果,结果列表中的值很少。只是想澄清相同的
#输入列表1:(3级嵌套列表)
[[1]]
[[1]]
[[1]][[1]]
[1] 1 128 177 82 18 156 1
[[1]][[2]]
[1] 1 142 65 141 107 143 1
[[1]][[3]]
[1] 1 179 92 34 194 171 1
[[2]]
[[2]][[1]]
[1] 1 128 177 82 18 156 1
[[2]][[2]]
[1] 1 142 65 141 107 143 1
[[2]][[3]]
[1] 1 179 92 171 1
[[2]]
[[1]]
[[1]][[1]]
[1] 1 128 177 156 1
[[1]][[2]]
[1] 1 107 143 1
[[1]][[3]]
[1] 1 179 92 34 194 171 1
[[2]]
[[2]][[1]]
[1] 1 128 177 82 18 156 1
[[2]][[2]]
[1] 1 142 107 143 1
[[2]][[3]]
[1] 1 179 92 34 194 171 1
输入列表2(3级嵌套列表)(与list1相同的结构)
[[1]]
[[1]]
[[1]][[1]]
[1] 120.8
[[1]][[2]]
[1] 192.7
[[1]][[3]]
[1] 992
[[2]]
[[2]][[1]]
[1] 895
[[2]][[2]]
[1] 220
[[2]][[3]]
[1] 440
[[2]]
[[1]]
[[1]][[1]]
[1] 203
[[1]][[2]]
[1] 404
[[1]][[3]]
[1] 20.35
[[2]]
[[2]][[1]]
[1] 45.6
[[2]][[2]]
[1] 56.93
[[2]][[3]]
[1] 99.3
使用上面列表执行的功能就像是长度一样 (1 128 177 82 18 156 1)小于常数(7),然后将列表2中的对应值(120.8)减少10%或其他
输出结构应与输入结构类似