Apply Function to Elements in Parallel using Futures
Overview
Implementations of apply(), by(), eapply(), lapply(), Map(), .mapply(), mapply(), replicate(), sapply(), tapply(), and vapply() that can be resolved using any future-supported backend, e.g. parallel on the local machine or distributed on a compute cluster. These future_*apply() functions come with the same pros and cons as the corresponding base-R *apply() functions but with the additional feature of being able to be processed via the future framework doi:10.32614/RJ-2021-048.
Significant Changes
- Memory use on parallel workers has gone down significantly in some cases for functions
future_lapply(),future_sapply(),future_apply(),future_tapply(),future_by(),future_Filter(),future_eapply(),future_mapply(), andfuture_Map(). An outcome of this is that the performance also improves. - Separately from the above, the memory use of
future_vapply()has gone down significantly, which also resulted in improved overall performance.
New Features
- If argument
future.labeloffuture_lapply()and friends has no format specifier, such as%d, then-%dis appended, e.g.future.label = "my-label"gives future labels"my-label-1","my-label-2", and so on. Previously, such labels produced a warning 'one argument not used by format'.
Show all changes in 1.21.0Hide the rest of the changes in 1.21.0
future_lapply()and friends now signal "Caught ... Canceling all iterations ..." as a message instead of a warning.
Bug Fixes
future_lapply(),future_sapply(),future_vapply(),future_tapply(),future_eapply(),future_by(), andfuture_Filter()ignored... %seed% seed. This led to random numbers depending on the future backend, the number of workers, and the chunk size. Per-element seeds were still generated, but silently dropped. Note thatfuture_apply(),future_mapply(),future_.mapply(), andfuture_Map()were not affected.future_vapply()on empty input failed with an error ifFUN.VALUEhad length greater than one.future_vapply()did not always return an object of the same type asFUN.VALUElikevapply()does.future_vapply()withFUN.VALUEas a list would recursively flatten the results into an atomic vector instead of returning a list.future_lapply()and friends with%seed%,%packages%, ... would leak those options to the next call, if there were zero elements to process.future_lapply()and friends with afuture.chunk.sizeless than one would launch futures that processed no elements. Now such chunk sizes result in one element per future.future_apply()with argumentfuture.globalsas a list could produce a false error on globals exceeding the maximum size allowed.future_.mapply()could fail with "formal argument matched by multiple actual arguments" ifdotshad names also used byfuture_mapply(), e.g."MoreArgs".future_kernapply()ignoredfuture.*arguments, and any additional argumentsstats::kernapply()might take.
Miscellaneous
- Package **stats** is now declared as an imported package instead of just a suggested package.
From NEWS.md in the release
Install
Health
NOTEdependencies in R coder-devel-linux-x86_64-debian-clang, r-devel-windows-x86_64
r-devel-linux-x86_64-debian-clang
Base package in Suggests/Enhances imported in NAMESPACE: ‘stats’
r-devel-windows-x86_64
Base package in Suggests/Enhances imported in NAMESPACE: 'stats'
- NOTE11 OK, 2 NOTE2026-09-12
- OK13 OK2026-08-05
- NOTE12 OK, 1 NOTE2026-08-01
- OK14 OK2026-03-10
Documentation
- Help pages
- 9 (2 internal)includes a package overview page
- Examples that run
- 83%5 run in a plain check · 1 never run
- Exported functions with examples
- 100%
- Documented parameters
- 100%
- Return-value docs
- 100%
- Help pages citing references
- 0%
Downloads
Repository
- PRs merged (all time)
- 67%
- Median days to close, 50 most recently updated closed issues
- 58
- Median days to close, 50 most recently updated closed PRs
- 2
Stars over time
Forks over time
Issues over time
PRs over time
Commits over time
Commit identities over time
11 development-tooling and community-health practices detected across 7 families in the upstream repository
Checks run against github.com/futureverse/future.apply on 2026-10-11.
The R CMD check workflow runs on Linux, macOS and Windows, and on R-devel
GitHub Pages site last deployed 2026-10-08
pkgdown site last built 2026-10-08, before release 1.21.0 (2026-10-16)
Show all practicesHide 3 practices
This repository shows signs of AI coding tools.
- Claude Codefirst seen 2026-09-23Commits: at least 1 crediting it in the message
- Claude Opus 5.51 commit · Sep 2026
Dependencies
Installing future.apply adds 5 packages (2 with compiled code, 1.1 MB of source tarballs). Heaviest: future 477 KB, parallelly 343 KB, digest 231 KB.
Show the 48 most downloaded dependentsHide the 48 most downloaded dependents
and 165 more dependents and 116 packages that suggest it on CRAN ↗
Code & Tests
People & History
Pick two releases to compare their code metrics.
- 1.21.0Latest2026-10-16 · current release · diff ↗ ·
listed once in CRAN's queue
Seen in one reading of CRAN's incoming queue, at 2026-10-16 12:54 UTC, so it stayed less than the time between readings. - RR 4.6.0 released · 2026-04-24
- 1.20.22026-02-20 · diff ↗
- 1.20.12025-12-09 · diff ↗
- 1.20.0
- RR 4.5.0 released · 2025-04-11
- 1.11.32024-10-27 · diff ↗
- RR 4.4.0 released · 2024-04-24
- 1.11.22024-03-28 · diff ↗
- 1.11.12023-12-21 · diff ↗
- 1.11.02023-05-21 · diff ↗
- RR 4.3.0 released · 2023-04-21
- 1.10.02022-11-05 · diff ↗
- 1.9.12022-09-07 · diff ↗
- 1.9.02022-04-26 · diff ↗
- RR 4.2.0 released · 2022-04-22
Show 17 earlier eventsHide 17 earlier events
- 1.8.12021-08-10 · diff ↗
- RR 4.1.0 released · 2021-05-18
- 1.7.02021-01-04 · diff ↗
- 1.6.02020-07-01 · diff ↗
- RR 4.0.0 released · 2020-04-24
- 1.5.0
- 1.4.02020-01-07 · diff ↗
- 1.3.02019-06-18 · diff ↗
- RR 3.6.0 released · 2019-04-26
- 1.2.0
- 1.1.02019-01-17 · diff ↗
- 1.0.12018-08-27 · diff ↗
- 1.0.0
- 0.2.0
- RR 3.5.0 released · 2018-04-23
- 0.1.02018-01-15
- RR 3.4.0 released · 2017-04-21
Package metadata
- First published
- 2018-01-15
- Total releases
- 23 / 8 yrs
- License
- GPL (>= 2) OSI · relicensed from LGPL (>= 2.1) in 1.0.0
- Minimum R
- ≥ 3.2.0
- Download size
- 80 KB
Cite
Cite this package
Run in R for the authors' entry:
citation("future.apply")The package provides a citation file, so citation() returns the authors' own entry.
It points to 10.32614/rj-2021-048.
The repository also keeps a CITATION.cff.
Cite the R Observatory
For a number measured here: a download total, a coverage figure, an archival date.
From data release v2026-10-18, which the citation names so these numbers can be found later. More on citing and the projects behind them.