Skip to contents

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

i_break(iterable, finished, ...)

Arguments

iterable

Iterable to iterate over.

finished

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

...

Further arguments forwarded to iteror.

Value

an iteror which will stop when finished() is TRUE

Details

Originally from the itertools package.

Examples


# 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(i_break(icount(), mkfinished(0.1))))
#> [1] 12890