The CRAN version of the R package wrapr package now includes a concise anonymous function constructor: l().
To use it please do the following: attach wrapr and ask it to place a definition for l() in your environment:
library("wrapr")
wrapr::defineLambda(name = "l")
ls()## [1] "LEFT_NAME" "OTHER_SYMBOL" "X" "Y"
## [5] "angle" "d" "d2" "df"
## [9] "f" "inputs" "l" "plotb"
## [13] "variable" "variable_name" "variable_string" "x"
Note: throughout this document we are using the letter “l” as a stand-in for the Greek letter lambda, as this non-ASCII character can cause formatting problems in some situations.
You can use l() to define functions. The syntax is: l(arg [, arg]*, body [, env=env]). That is we write a l()-call (which you can do by cutting and pasting) and list the desired function arguments and then the function body. For example the function that squares numbers is:
l(x, x^2)## function (x)
## x^2
We can use such a function to square the first four positive integers as follows:
sapply(1:4, l(x, x^2))## [1] 1 4 9 16
Dot-pipe style notation does not need the l() factory as it treats pipe stages as expressions parameterized over the variable “.”:
1:4 %.>% { .^2 }## [1] 1 4 9 16
And we can also build functions that take more than one argument as follows:
l(x, y, x + 3*y)## function (x, y)
## x + 3 * y