将递归函数的输出保存为列表

时间:2013-02-14 23:39:26

标签: r recursion

我想将递归函数的输出保存为列表。

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

我该怎么做呢?也许这比我想象的要简单,但我已经被困了几天了!

我不认为这里的代码很重要:我的问题的一般想法是将递归函数的输出(例如hanoi的塔)保存为数据类型,例如list或data.frame。

2 个答案:

答案 0 :(得分: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参数允许您第一次创建新列表,但随后将现有列表传递给递归调用。

答案 1 :(得分:0)

没有代码可以看到我不确定它是否有用,但你考虑过使用rapply吗? rapply help page它是lapply和lapply的递归版本,返回列表作为输出。