Create an iterator that can be told to stop

Share:

Description

Create an iterator that iterates over another iterator until a specified function returns FALSE. This can be useful for breaking out of a foreach loop, for example.

Usage

1
ibreak(iterable, finished)

Arguments

iterable

Iterable to iterate over.

finished

Function that returns a logical value. The iterator stops when this function returns FALSE.

Examples

1
2
3
4
5
6
# See how high we can count in a tenth of a second
mkfinished <- function(time) {
  starttime <- proc.time()[3]
  function() proc.time()[3] > starttime + time
}
length(as.list(ibreak(icount(), mkfinished(0.1))))