fold {future}R Documentation

Efficient fold / reduce / accumulate / combine of a vector

Description

Efficient fold / reduce / accumulate / combine of a vector

Usage

fold(x, f, left = TRUE, unname = TRUE, threshold = 1000L)

Arguments

x

A vector.

f

A binary function, i.e. a function take takes two arguments.

left

If 'TRUE', vector is combined from the left (the first element), otherwise the right (the last element).

unname

If 'TRUE', function 'f' is called as 'f(unname(y), x[[ii]])', otherwise as 'f(y, x[[ii]])', which may introduce name '"y"'.

threshold

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.

Details

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.

Value

A vector.


[Package future version 1.7.0 Index]