zfit
makes it easier to use a piped workflow with
functions that don’t have the “correct” order of parameters (the first
parameter of the function does not match the object passing through the
pipe).
The issue is especially prevalent with model fitting functions, such
as when passing and processing a data.frame
(or
tibble
) before passing them to lm()
or similar
functions. The pipe passes the data object
(data.frame
/tibble
) into the first parameter
of the function, but the conventional estimation functions expect a
formula to be the first parameter.
This package addresses the issue with three functions that make it trivial to construct a pipe-friendly version of any function:
zfunction()
reorders the arguments of a function.
Just pass the name of a function, and the name of the parameter that
should receive the piped argument, and it returns a version of the
function with that parameter coming first.
zfold()
creates a fold (a wrapper or envelope)
around a function with the reordered arguments. This is sometimes needed
instead of a simple reordering, for example for achieving correct S3
dispatch, and for functions that report its name or other information in
output.
zfitter()
takes any estimation function with the
standard format of a formula
and data
parameter, and returns a version suitable for us in pipes (with the
data
parameter coming first). Internally, it simply calls
the zfold()
function to create a fold around the fitter
function.
The package also includes ready made wrappers around the most
commonly used estimation functions. zlm()
and
zglm()
correspond to lm()
and
glm()
, as well as
zlogit()
]and
zprobit(), and
zpoisson()],
to perform logistic or poisson regression within a pipe.
Finally, the package also includes the print()
function,
which is intended to simplify the printing of derived results, such as
summary()
, within the pipe, without affecting the modeling
result itself.