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'應用於樹葉而獲得的相同結構的樹? –