2016-08-02 36 views
1

我有數據框的列表,我嘗試通過應用merge()將列表的所有元素合併到單個數據框中。我正在尋找一種可處理不同功能和大量列表元素的通用解決方案。R:在列表上遞歸地執行操作

爲了方便工作的例子,我們使用一個應該有相同解決方案的相關問題。因此,假設我們有一個不是數字的列表:

foo <- list(1, 2, 478, 676) 

讓我們進一步假設,我試圖寫一個腳本,需要第一號和第二分吧。然後它將商數除以第三。然後它將商數除以第四等等。最後,我將單個數存儲在單個對象中。例如:

((foo[1]/foo[2])/foo[3])/foo[4] 

我見過rapply()上列出的遞歸操作,但所有的例子都是退市名單,而不是其他操作,如合併()或算術運算。

+1

'減少(函數(a,b)a/b,foo)'按照你在這裏所建議的,它可能不適用於你的整體問題。 – r2evans

+2

然後請用更合適的例子更新您的問題。如果我們不瞭解您的數據結構,我們無法提供幫助。 (很好的參考資料:[help/mcve](http://stackoverflow.com/help/mcve)和[reproducible examples](http://stackoverflow.com/questions/5963269/how-to-make-a-great- r-reproducible-example)。) – r2evans

+0

你確定你的意思是遞歸的嗎?你的例子中你沒有真正的嵌套結構?你似乎正在描述一個迭代過程,這正是「Reduce」的用途。我同意你需要一個更好的例子來使差異更加清晰。如果你有一個data.frames列表,你可以將它們合併爲Reduce(merge,list(data.frame(a = 1,b = 2),data.frame(a = 1,x = 10))) – MrFlick

回答

0

正如註釋中所述,使用Reduce(function, x)工作,其中function是對列表中的每個元素執行的功能,x是列表。