Introduction and notation
This vignette explains the design choices of
checkinput. It also shows how to get a named boolean
vector indicating for each element of x if it is
TRUE or FALSE according to the check
functions.
Type of x
The check functions of checkinput return either
TRUE or FALSE and do not
throw errors for any input to x: throwing an error about
x is deferred to stopifnot() in which calls to
functions from checkinput are typically wrapped when
they are used inside other functions. Errors are thrown
about invalid input to arguments other than x, e.g., when
values other than TRUE or FALSE are used for
argument allow_NA.
The default arguments make functions of checkinput
more restrictive than the equivalent functions in base
R because the functions of checkinput
are intended for argument checking. For example,
checkinput::is_logical() by default returns
FALSE for logical(0) because zero-length
x is usually unwanted in function arguments, whereas
base::is.logical() returns TRUE for
logical(0) because it has type logical.
Length of x
By default, the is_* check functions only return
TRUE for x of length one (with the obvious
exception of is_zerolength(x)) and the all_*
check functions return TRUE for x of length
larger than zero. Set argument allow_zero to
TRUE to let check functions also return TRUE
for zero-length x of the correct type. See
help("is_zerolength") and vignette("type_coercion", package = "checkinput")
for a discussion of some issues with zero-length input.
NA and NaN in x
By default, the check functions return FALSE for
x containing NA or NaN. Set
argument allow_NA to TRUE to let them return
TRUE for x containing NA of the
correct type, and set argument allow_NaN in functions like
is_number() to TRUE to let them return
TRUE for x containing NaN.
Return
The check functions of checkinput return either
TRUE or FALSE. To get a named boolean vector
indicating for each element of x if it is TRUE
or FALSE according to the check functions, use
vapply(X = x, FUN = all_<func>, FUN.VALUE = logical(1))
instead of all_<func>(x), where
all_<func> should be replaced with the relevant
function name. For example, to check which elements of x
are valid names, use
vapply(X = x, FUN = all_names, FUN.VALUE = logical(1))
instead of all_names(x). Other function arguments passed to
all_names(), e.g., allow_underscores = FALSE
to not allow underscores, should be placed behind argument
FUN.VALUE:
vapply(X = x, FUN = all_names, FUN.VALUE = logical(1), allow_underscores = FALSE).