checkr Naming Schemes

The checkr packages provides a series of functions that can be used to check the values and classes of common R objects. Before attempting to use the functions it is worth understanding the checkr function naming schemes.

Primary Objects

As discussed in the Data Structures chapter in Advanced R by Hadley Wickham, the five main object types are defined by their dimensionality (1d, 2d and nd) and whether they are homogenous or heterogenous. Currently the check_vector(), check_list() and check_data() functions allow the user to check the type and values of the three main type of (atomic) vectors, lists and data frames. The check_matrix() and check_array() equivalents have yet to be implemented. The functions are named according to the type of the object they check.

It is worth noting that a while a vector, matrix or array will definitely pass the check_homogenous() function, a list or data frame may pass it if all its elements have identical classes.

Scalars

In addition to (atomic) vectors the checkr package also identifies scalars which in R are (atomic) vectors with one element. They can be tested using the check_scalar() function.

Often function arguments are scalars of a particular type. For example the default mean() function has an argument na.rm which is a logical indicating whether NA values should be stripped. The checkr package provides the following functions to test whether objects are non-missing scalars of particular types:

  • check_lgl(): a non-missing logical scalar i.e. TRUE or FALSE
  • check_int(): an non-missing integer i.e. 1L
  • check_dbl(): an non-missing double scalar i.e. 1.1
  • check_prop(): a non-missing double scalar between zero and one, i.e. 0.35
  • check_chr(): a non-missing character scalar, i.e. "text"
  • check_date(): a non-missing Date scalar i.e. as.Date("2001-02-03")
  • check_dttm(): a non-missing POSIXct scalar

It is also worth noting that almost all the scalar functions include an argument coerce which if set to TRUE tests whether the object satisfies the condition after coercing to the required type. If the test passes then the function returns the coerced object.

Other Objects

Functions to test whether an object is another type of object include check_null(), check_environment() and check_function().

In addition the check_classes() and check_inherits() functions can be used to check the classes or inheritance of an object.

Function Functions

Many other checking functions are named according to the main base function that they use. Thus the check_nrow() function uses the nrow() function to check the number of rows while the check_nlevels() function uses the nlevels() function. It is important to realize that these functions do not check the type of an object but simply whether the return value of the base function(s) is consistent with the user defined conditions.

Functions which fall in this category include check_class(), check_colnames(), check_length(), check_levels(), check_names(), check_nchar(), check_ncol(), check_nlevels(), check_nrow() and check_sorted().

Data Functions

The check_join() function tests whether the columns in one data frame form a many-to-one join with corresponding columns in a second data frame. The check_key() function tests whether specific columns are unique. They are useful for testing whether a set of data frames can be archived in an relational database.

Miscellaneous Functions

The remaining functions which are not captured by the above naming schemes include checkor(), check_named(), check_pattern(), check_regex(), check_sorted(), check_tzone(), check_unique(), check_unnamed() and check_unused().