我的自定义迭代器有点慢。我希望在使用unlist(as.list(ic, n=2000))
构造时加快速度。但是,我不知道如何实现此功能。我只找到了nextElem
和hasNext
方法。迭代器看起来像这样:
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
的内存友好版本。