2013-02-14 95 views
-3

我想將遞歸函數的輸出保存爲一個列表。將遞歸函數的輸出保存爲列表

> (getNames(74, foo)) 
[1] "Excavata" 
[1] "Excavata" 
[1] "Excavata" 
[1] "Excavata" 
[1] "Stramenopiles" 
[1] "Stramenopiles" 
[1] "Stramenopiles" 
[1] "Excavata" 
[1] "Excavata" 
[1] "Metazoa" 

我該如何去做這件事?也許這比我想象的更簡單,但是我被困了幾天!

我不認爲這裏的代碼很重要:我的問題的總體思路是將遞歸函數的輸出(比如河內塔)的輸出保存爲數據類型,如列表或數據框。

+0

準確的代碼可能並不重要,但回答提供可重現示例的問題總是更容易。 – Gregor 2013-02-14 23:44:40

+1

請讓你的例子[reproducible](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)!如果不知道你的'遞歸'函數做什麼,它會很難回答,以及它是如何做到的。 – mnel 2013-02-14 23:45:58

+0

不清楚你想要什麼。你能給出一個示例函數和輸入以及你正在尋找的這個「convert to list」操作的期望輸出嗎? – scott 2013-02-14 23:46:13

回答

3

如果你真的想確切的代碼並不重要:

recursive_add <- function(x, res_list=NULL) { 
    if (is.null(res_list)) { 
    res_list <- list() 
    } 
    if (x == 26) { 
    return(res_list) 
    } 
    res_list[[x]] <- letters[x] 
    res_list <- recursive_add(x + 1, res_list) 
    return(res_list) 
} 
recursive_add(1) 

默認NULL參數允許你創建一個新的列表中的第一次,但再往下傳遞現有列表的遞歸調用。

0

沒有代碼看看我不確定它是否有用,但你有沒有考慮過使用rapply? rapply help page其遞歸版本的lapply和lapply返回列表作爲輸出。