具有多个返回值的自定义迭代器

时间:2017-01-04 08:15:42

标签: r iterator

我的自定义迭代器有点慢。我希望在使用unlist(as.list(ic, n=2000))构造时加快速度。但是,我不知道如何实现此功能。我只找到了nextElemhasNext方法。迭代器看起来像这样:

library(itertools)
fibonacci <- function(count = NA) {
    ab = c(0, 1)
    n <- function() {
      if (!is.na(count)) {
        if (count > 0) count <<- count -1
        else stop('StopIteration')
      }
      #
      ab <<- c(ab[2], sum(ab))
      ab[1]
    }
    obj <- list(nextElem = n)
    class(obj) <- c('fibonacci', 'abstractiter', 'iter')
    obj
}

我可以这样使用它:

ic <- fibonacci ()
print (nextElem (ic))

现在我想通过

立即获得接下来的10个斐波纳契数字
print(unlist(as.list(ic, n=10)))

但这当然需要实施。我该怎么做?

斐波纳契迭代器就是一个例子。实际上,我在一个迭代器上工作,该迭代器给出了n-set的所有k组合,即combn的内存友好版本。

0 个答案:

没有答案