0
我试图在R中查找或编写与Map()相关的函数,该函数在应用函数时生成结果的嵌套列表。R中的递归映射
的R图的()函数运行如下:
Map(f, v, w, x)
=> list(
f(v1, w1, x1),
f(v2, w2, x2), ...)
我想在在诉论证每一个组合来映射功能,W,X,等,并返回一个列表 - 顶级对应于诉条目列表,每个这些条目的应该是一个列表,包含的重量的每一级的条目,并在...
在代码中,我想
Map_recursive(f, v) == Map(f, v) == lapply(v, f)
#
# Map_recursive(c, c(a1=1, a2=2))
# => List(a1 = 1, a2 = 2)
Map_recursive(f, v, w)
== Map(function(vi) {
Map(f, vi, w)
}, v)
== lapply(v, function(vi){
lapply(w, function(wi) f(vi, wi))
})
#
# Map_recursive(c, c(a1 = 1, a2 = 2), c(b1=10, b2 = 20, b3 = 30))
# => List(
# a1 = List(b1 = (1, 10), b2 = (1, 20), b3 = (1, 30)),
# a2 = List(b1 = (2, 10), b2 = (2, 20), b3 = (2, 30))
# )
Map_recursive(f, v, w, x) == Map(function(vi){
Map(function(wj){
Map(f, vi, wj, x)
}, w)},
v
)
# ... all the way down
重要的是,联合国就像在Map中那样,迭代输入不需要有相同的长度(例如,v,w,x可以有不同的长度),并且不同数量的迭代输入应该是可能的。
我经历的事情如R搜索:: purrr和R ::功能,但我无法找到一个高阶函数,做什么,我需要
[R
为什么你想递归地做到这一点,这又如何从函数的不同之处'申请'家庭是R的'地图'版本? –
我可以看到使用该功能家族做我想做的事情的唯一方法是将lapply调用嵌套在对方内部,这很丑陋,必须进行硬编码才能使用不同数量的迭代器工作 –
您的问题isn不太清楚,但它开始有意义。有问题的'f'应该适用于原子类型和'v','w'等嵌套列表具有相同的嵌套程度(例如表示树),然后您正在寻找一个map函数,它将采集一个集合例如并行树并返回一个通过将'f'应用于树叶而获得的相同结构的树? –