2013-02-14 96 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返回列表作为输出。