如何重置无污染的全球计数器?

时间:2017-08-07 23:26:33

标签: r

我需要一个没有污染工作空间的全球计数器。我能够使用另一个SO post创建一个,如下所示。

nex <- local(({ # increment a counter and return the ith entry
  i <- 0L
  function(v) {
    if (i == length(v)) i <<- 0L
    i <<- i + 1L
    return(v[i])
  }
}))

我可以在函数中使用nex,如下所示,它可以正常工作; i不在工作区中。

magic <- function(num_vec) {
  tmp <- nex(num_vec)
  print(tmp) # output is correct
}

运行它:

jnk <- magic(1:5) # works as expected, i is not in workspace

现在提出问题! i位于其自身的特殊环境中。在我工作的更大范围内,我需要能够在某些点将i重置为1。我不确定如何重置它,因为我找不到它被藏起来的地方。我怎样才能让i重置它?

1 个答案:

答案 0 :(得分:1)

怎么样:

environment(nex)$i <- 0