A function or formula.
If a function, it is used as is.
If a formula, e.g. ~ .x + 2, it is converted to a function
with up to two arguments: .x (single argument) or .x and .y
(two arguments). The . placeholder can be used instead of .x.
This allows you to create very compact anonymous functions (lambdas) with up
to two inputs. Functions created from formulas have a special
class. Use is_lambda() to test for it.
If a string, the function is looked up in env. Note that
this interface is strictly for user convenience because of the
scoping issues involved. Package developers should avoid
supplying functions by name and instead supply them by value.