# fold: Efficient Fold, Reduce, Accumulate, Combine of a Vector In future.apply: Apply Function to Elements in Parallel using Futures

 fold 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 `Reduce(f, x, right = !left, accumulate = FALSE)`, especially when `x` is long.

### Value

A vector.

future.apply documentation built on May 29, 2024, 7:48 a.m.