This function comes from the future.apply
package.
fold(x, f, left = TRUE, unname = TRUE, threshold = 1000L)
A vector.
A binary function, i.e. a function take takes two arguments.
If TRUE
, vector is combined from the left (the first element),
otherwise the right (the last element).
If TRUE
, function f
is called as f(unname(y), x[[ii]])
,
otherwise as f(y, x[[ii]])
, which may introduce name "y"
.
[[ii]: R:[ii [[ii]: R:[ii
An integer (>= 2) specifying the length where the
recursive divide'and'conquer call will stop and incremental building of
the partial value is performed. Using threshold = +Inf
will disable
recursive folding.
A vector.
In order for recursive folding to give the same results as non-recursive
folding, binary function f
must be associative with itself, i.e.
f(f(x[[1]], x[[2]]), x[[3]])
equals f(x[[1]], f(x[[2]]), x[[3]])
.
This function is a more efficient (memory and speed) of
[base::Reduce(f, x, right = !left, accumulate = FALSE)
][base::Reduce],
especially when x
is long.
[[1]: R:[1 [[2]: R:[2 [[3]: R:[3 [[1]: R:[1 [[2]: R:[2 [[3]: R:[3 [base::Reduce]: R:base::Reduce