functools
extends functional programming in R. It accomplishes several goals:
Add support to the usual higher order functional suspects (Filter()
, Map()
, Reduce()
, etc.) with higher order functions (Compose()
, Memoise()
, Partial()
, Reject()
, Fail_With()
, Reduce_Right()
, All()
, Any()
, and Best()
).
Supply higher order function generators (Andify()
, Orify()
) to make composing predicate functions easier.
Provide wrappers (Apply()
, Lapply()
, Mapply()
, Sapply()
, Tapply()
, and Vapply()
) around their respective base R functionals to create an API with consistent naming convention, positional arguments, and argument names.
Implement common constants as functions (True()
, False()
, Identity()
, Null()
, Na()
) for point-free programming.
Extend abstract concepts of existiness and truthiness through functions (Existy()
, Truthy()
).
functools achieves these goals through three main types of function design patterns:
Closures (functions that take data and return functions)
Functionals (functions that take functions and return data)
Function Operators (functions that take functions and return functions)
You can install:
the latest released version from CRAN with
r
install.packages("functools")
the latest development version from github with
r
if (packageVersion("devtools") < 1.6) {
install.packages("devtools")
}
devtools::install_github("paulhendricks/functools")
If you encounter a clear bug, please file a minimal reproducible example on github.
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.