Learn R Programming

checkr

checkr is a light-weight R package of expressive, assertive, pipe-friendly functions to check the properties of common R objects.

In the case of failure the functions, which are designed to be used in scripts and packages, issue informative error messages.

For an overview of the functions see the checkr-naming vignette and for a comparison with similar packages see the assertive-programming vignette.

Demonstration

The following code demonstrates the check_data() function

library(checkr)

# the starwars data frame in the dplyr package fails many of these checks
check_data(dplyr::starwars, values = list(
  height = c(66L, 264L),
  name = "",
  mass = c(20,1358, NA),
  hair_color = c("blond", "brown", "black", NA),
  gender = c("male", "female", "hermaphrodite", "none", NA)), 
    order = TRUE, nrow = c(81, 84), key = "hair_color", error = FALSE)
#> Error in cc_and(colnames): could not find function "cc_and"

Syntax

checkr uses objects to check the values of other objects using an elegant and expressive syntax.

Class

To check the class simply pass an object of the desired class.

y <- c(2,1,0,1,NA)
check_vector(y, values = numeric(0))
check_vector(y, values = integer(0))
#> Error: y must be class integer

Missing Values

To check that a vector does not include missing values pass a single non-missing value (of the correct class).

check_vector(y, 1)
#> Error: y must not include missing values

To allow it to include missing values include a missing value.

check_vector(y, c(1, NA))

And to check that it only includes missing values only pass a missing value (of the correct class)

check_vector(y, NA_real_)
#> Error: y must only include missing values

Range

To check the range of a vector pass two non-missing values (as well as the missing value if required).

check_vector(y, c(0, 2, NA))
check_vector(y, c(-1, -10, NA))
#> Error in cc_and(values[1:2]): could not find function "cc_and"

Specific Values

To check the vector only includes specific values pass three or more non-missing values or set only = TRUE.

check_vector(y, c(0, 1, 2, NA))
check_vector(y, c(1, 1, 2, NA))
#> Error in cc_or(values): could not find function "cc_or"
check_vector(y, c(1, 2, NA), only = TRUE)
#> Error in cc_or(values): could not find function "cc_or"

Naming Objects

By default, the name of an object is determined from the function call.

check_vector(list(x = 1))
#> Error: list(x = 1) must be an atomic vector

This simplifies things but results in less informative error messages when used in a pipe.

library(magrittr)
y %>% check_list()
#> Error: . must be a list

The argument x_name can be used to override the name.

y %>% check_list(x_name = "y")
#> Error: y must be a list

Scalars

The four wrapper functions check_lgl(), check_int(), check_dbl() and check_str() check whether an object is an attribute-less non-missing scalar logical (flag), integer, double (number) or character (string). They are really useful for checking the types of arguments in functions

fun <- function(x) { check_lgl(x)}
fun(x = NA)
#> Error: x must not include missing values
fun(x = TRUE)
fun(x = 1)
#> Error: x must be class logical

Additional scalar wrappers are check_date() and check_dttm() for scalar Date and POSIXct objects. Alternatively you can roll your own using the more general check_scalar() function.

Installation

To install the latest official release from CRAN

install.packages("checkr")

To install the latest development version from GitHub

install.packages("devtools")
devtools::install_github("poissonconsulting/err")
devtools::install_github("poissonconsulting/checkr")

To install the latest development version from the Poisson drat repository

install.packages("drat")
drat::addRepo("poissonconsulting")
install.packages("checkr")

Citation


To cite checkr in publications use:

  Joe Thorley (2018). checkr: An R package for Assertive
  Programming. Journal of Open Source Software, 3(23), 624. URL
  https://doi.org/10.21105/joss.00624

A BibTeX entry for LaTeX users is

  @Article{,
    title = {checkr: {An} {R} package for {Assertive} {Programming}},
    author = {Joe Thorley},
    journal = {Journal of Open Source Software},
    year = {2018},
    volume = {3},
    number = {23},
    pages = {624},
    url = {http://joss.theoj.org/papers/10.21105/joss.00624},
  }

Contribution

Please report any issues.

Pull requests are always welcome.

Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.

Inspiration

datacheckr

Copy Link

Version

Install

install.packages('checkr')

Monthly Downloads

58

Version

0.5.0

License

MIT + file LICENSE

Issues

Pull Requests

Stars

Forks

Maintainer

Joe Thorley

Last Published

April 25th, 2019

Functions in checkr (0.5.0)

check_missing_names

Check Missing Names
check_dbl

Check Dbl
check_dttm

Check Date Time
check_data

Check Data
check_classes

Check Classes
check_name

Check Name
check_named

Check Named
check_colnames

Check Colnames
check_homogenous

Check Homogenous
check_inherits

Check Inherits
check_names

Check Names
check_function

Check Function
check_intersection

Check Atomic Vector Intersection
check_count

Check Count
check_join

Check Join
check_date

Check Date
check_int

Check Int
check_prob

Check Probability
check_length1

Check Length One
check_integer

Check Integer
check_grepl

Check Matches Regular Expression
check_levels

Check Levels
check_environment

Check Environment
check_props

Check Proportions
check_flag_na

Check Flag or NA
check_key

Check Key
check_nlevels

Check nlevels
check_lgl

Check Flag
check_length

Check Length
check_logical

Check Logical
check_nrow

Check Number of Rows
check_no_attributes

Check No Attributes
check_list

Check List
check_null

Check NULL
check_noneg_dbl

Check Non-Negative Dbl
check_missing_colnames

Check Missing Colnames
check_scalar

Check Scalar
check_rbind

Check Row Bind
check_unique

Check Unique
check_neg_dbl

Check Negative Dbl
checkor

Check OR
check_nchar

Check Number of Characters
check_unnamed

Check Unnamed
check_noneg_int

Check Non-Negative Int
check_pos_dbl

Check Positive Dbl
checkr-package

checkr: Check the Properties of Common R Objects
check_neg_int

Check Negative Int
check_ncol

Check Number of Columns
chk_deparse

Deparse
chk_tiny_dbl

Tiny Positive Double
check_numeric

Check Numeric
check_pos_int

Check Positive Int
chk_fail

Fail
check_pattern

Check Pattern
check_sorted

Check Sorted
check_tzone

Check TimeZone
check_unused

Check Unused
chk_min_dbl

Min Double
check_vector

Check Atomic Vector
chk_min_int

Min Integer
chk_max_dbl

Max Double
chk_max_int

Max Int
check_attributes

Check Attributes
check_character

Check Character
check_chr

Check String