# Functional programming
# Built-in Higher Order Functions
R has a set of built in higher order functions: Map, Reduce, Filter, Find, Position, Negate.
Map applies a given function to a list of values:
words <- list("this", "is", "an", "example")
Map(toupper, words)
Reduce successively applies a binary function to a list of values in a recursive fashion.
Reduce(`*`, 1:10)
Filter given a predicate function and a list of values returns a filtered list containing only values for whom predicate function is TRUE.
Filter(is.character, list(1,"a",2,"b",3,"c"))
Find given a predicate function and a list of values returns the first value for which the predicate function is TRUE.
Find(is.character, list(1,"a",2,"b",3,"c"))
Position given a predicate function and a list of values returns the position of the first value in the list for which the predicate function is TRUE.
Position(is.character, list(1,"a",2,"b",3,"c"))
Negate inverts a predicate function making it return FALSE for values where it returned TRUE and vice versa.
is.noncharacter <- Negate(is.character)
is.noncharacter("a")
is.noncharacter(mean)