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