如何避免在R中嵌套mapply

时间:2016-10-06 17:12:07

标签: r

我知道嵌套的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%或其他

输出结构应与输入结构类似

0 个答案:

没有答案