chk is an R package for developers to check
user-supplied function arguments. It is designed to be simple,
customizable and fast.
chk_ functions check the properties of individual
objects. For example
chk_flag(x) checks whether
x is a flag, i.e., a non-missing logical vector of length
chk_ functions are called for their side-effects, i.e.,
they throw an informative error if the object fails the check. Although
do return an invisible copy of the first argument so they can be used in
The error messages, which follow the tidyverse style
guide, are designed to allow the user to quickly identify the
problem with the argument value(s) they are providing. The errors are rlang errors of
chk_ function has a matching
function which returns a flag indicating whether the object passed the
vld_ functions allow developers to provide their own
chk_ functions are designed to be used within
functions. Consequently, when constructing an error message they use the
name of the object that they received as this is expected to be the name
of the argument.
If this is not the case, developers can provide a different name
vld_) functions are not
expected to be directly exposed to users they don’t check any of their
arguments (other than the object of interest of course!) to ensure that
they are as fast as possible.
chk_flag() function illustrates the general
structure of a
chk_ function initially checks the object (using its
vld_ partner) and if the object passes the check
immediately returns an invisible copy of the object. If, and only if,
the object fails the check does the
chk_ function construct
and then throw an informative error message.
functions are exported to make it easy for programmers to develop their
chk_ functions. The chk-lgl.R
script illustrates the general template to use when developing your own
abort_chk() function converts multiple arguments to
a string using
paste0(..., collapse = '') and provides
sprintf-like types. By default it also
capitalizes the first character and adds a missing period.
check_ functions are more complex then the
chk_ functions which make them slower but makes doing some
general tests easier.