# chk Families

The chk_ functions (and their vld_ equivalents) can be divided into the following families. For reasons of space, the x_name = NULL argument is not shown.

## Check Logical

Function Code
chk_true(x) is.logical(x) && length(x) == 1L && !anyNA(x) && x
chk_false(x) is.logical(x) && length(x) == 1L && !anyNA(x) && !x
chk_flag(x) is.logical(x) && length(x) == 1L && !anyNA(x)
chk_lgl(x) is.logical(x) && length(x) == 1L

## Check Scalars

Function Code
chk_scalar(x) length(x) == 1L
chk_number(x) is.numeric(x) && length(x) == 1L && !anyNA(x)
chk_whole_number(x) vld_number(x) && (is.integer(x) || vld_true(all.equal(x, trunc(x))))
chk_string(x) is.character(x) && length(x) == 1L && !anyNA(x)
chk_date(x) inherits(x, "Date") && length(x) == 1L && !anyNA(x)
chk_datetime(x) inherits(x, "POSIXct") && length(x) == 1L && !anyNA(x)
chk_tz(x) is.character(x) && length(x) == 1L && !anyNA(x) && x %in% OlsonNames()

## Check Ranges

Function Code
chk_range(x, range = c(0, 1)) all(x[!is.na(x)] >= range[1] & x[!is.na(x)] <= range[2])
chk_lt(x, value = 0) all(x[!is.na(x)] < value)
chk_lte(x, value = 0) all(x[!is.na(x)] <= value)
chk_gt(x, value = 0) all(x[!is.na(x)] > value)
chk_gte(x, value = 0) all(x[!is.na(x)] >= value)

## Check Equals

Function Code
chk_identical(x, y) identical(x, y)
chk_equal(x, y, tolerance = sqrt(.Machine$double.eps)) vld_true(all.equal(x, y, tolerance)) chk_equivalent(x, y, tolerance = sqrt(.Machine$double.eps)) vld_true(all.equal(x, y, tolerance, check.attributes = FALSE))

## Check Alls

Function Code
chk_all(x, chk_fun, ...) all(vapply(x, chk_fun, TRUE, ...))
chk_all_identical(x) length(x) < 2L || all(vapply(x, vld_identical, TRUE, y = x[[1]]))
chk_all_equal(x, tolerance = sqrt(.Machine$double.eps)) length(x) < 2L || all(vapply(x, vld_equal, TRUE, y = x[[1]], tolerance = tolerance)) chk_all_equivalent(x, tolerance = sqrt(.Machine$double.eps)) length(x) < 2L || all(vapply(x, vld_equivalent, TRUE, y = x[[1]], tolerance = tolerance))

## Check Set

Function Code
chk_setequal(x, values) setequal(x, values)
chk_subset(x, values) all(x %in% values)
chk_superset(x, values) all(values %in% x)
chk_join(x, y, by) identical(nrow(x), nrow(merge(x, unique(y[if (is.null(names(by))) by else names(by)]), by = by)))

## Check Is

Function Code
chk_atomic(x) is.atomic(x)
chk_function(x, formals = NULL) is.function(x) && (is.null(formals) || length(formals(x)) == formals)
chk_numeric(x) is.numeric(x)
chk_s3_class(x, class) !isS4(x) && inherits(x, class)
chk_s4_class(x, class) isS4(x) && methods::is(x, class)
chk_vector(x) is.vector(x)
chk_whole_numeric(x) is.integer(x) || (is.double(x) && vld_true(all.equal(x, as.integer(x))))
chk_array(x) is.array(x)
chk_matrix(x) is.matrix(x)
chk_data(x) inherits(x, "data.frame")

## Check Typeof

Function Code
chk_environment(x) is.environment(x)
chk_list(x) is.list(x)
chk_logical(x) is.logical(x)
chk_double(x) is.double(x)
chk_integer(x) is.integer(x)
chk_character(x) is.character(x)

## Check NULLs

Function Code
chk_null(x) is.null(x)
chk_not_null(x) !is.null(x)

## Check Ellipsis

Function Code
chk_used(...) length(list(...)) != 0L
chk_unused(...) length(list(...)) == 0L

## Check Files

Function Code
chk_file(x) vld_string(x) && file.exists(x) && !dir.exists(x)
chk_ext(x, ext) vld_string(x) && vld_subset(tools::file_ext(x), ext)
chk_dir(x) vld_string(x) && dir.exists(x)

## Check Miscellaneous

Function Code
chk_match(x, regexp = ".+") all(grepl(regexp, x[!is.na(x)]))
chk_named(x) !is.null(names(x))
chk_not_empty(x) length(x) != 0L
chk_not_any_na(x) !anyNA(x)
chk_unique(x, incomparables = FALSE) !anyDuplicated(x, incomparables = incomparables)
chk_sorted(x) is.unsorted(x)

## Check

Function
check_data(x, values = NULL, exclusive = FALSE, order = FALSE, nrow = numeric(0), key = character(0))

check_dim(x, dim = length, values = numeric(0), dim_name = NULL)

check_key(x, key = character(0), na_distinct = FALSE)

check_names(x, names = character(0), exclusive = FALSE, order = FALSE)

check_values(x, values)