Is the input TRUE/FALSE/NA?
Checks to see if the input is TRUE
, FALSE
or NA
.
assert_is_identical_to_false( x, allow_attributes = FALSE, severity = getOption("assertive.severity", "stop") ) assert_is_identical_to_na( x, allow_attributes = FALSE, severity = getOption("assertive.severity", "stop") ) assert_is_identical_to_true( x, allow_attributes = FALSE, severity = getOption("assertive.severity", "stop") ) assert_all_are_false(x, severity = getOption("assertive.severity", "stop")) assert_any_are_false(x, severity = getOption("assertive.severity", "stop")) assert_all_are_na(x, severity = getOption("assertive.severity", "stop")) assert_any_are_na(x, severity = getOption("assertive.severity", "stop")) assert_all_are_true(x, severity = getOption("assertive.severity", "stop")) assert_any_are_true(x, severity = getOption("assertive.severity", "stop")) assert_all_are_not_false(x, severity = getOption("assertive.severity", "stop")) assert_any_are_not_false(x, severity = getOption("assertive.severity", "stop")) assert_all_are_not_na(x, severity = getOption("assertive.severity", "stop")) assert_any_are_not_na(x, severity = getOption("assertive.severity", "stop")) assert_all_are_not_true(x, severity = getOption("assertive.severity", "stop")) assert_any_are_not_true(x, severity = getOption("assertive.severity", "stop")) is_identical_to_false( x, allow_attributes = FALSE, .xname = get_name_in_parent(x) ) is_identical_to_na(x, allow_attributes = FALSE, .xname = get_name_in_parent(x)) is_identical_to_true( x, allow_attributes = FALSE, .xname = get_name_in_parent(x) ) is_false(x, .xname = get_name_in_parent(x)) is_na(x, coerce_to_logical = FALSE, .xname = get_name_in_parent(x)) is_not_na(x, coerce_to_logical = FALSE, .xname = get_name_in_parent(x)) is_not_false(x, .xname = get_name_in_parent(x)) is_not_true(x, .xname = get_name_in_parent(x)) is_true(x, .xname = get_name_in_parent(x))
x |
Input to check. See note. |
allow_attributes |
If |
severity |
How severe should the consequences of the assertion be?
Either |
.xname |
Not intended to be used directly. |
coerce_to_logical |
Logical: should the input be coerced to logical before checking? See note. |
The is*
functions return TRUE
if the input is
TRUE
/FALSE
. The assert_*
functions return nothing but
throw an error if the corresponding is_*
function returns
FALSE
.
is_identical_to_true
wraps the base function isTRUE
,
providing more information on failure. Likewise,
is_identical_to_false
checks that the input is identical to FALSE. If
allow_attributes
is TRUE
, a scalar value of TRUE
with
attributes is allowed. is_true
and is_false
are vectorized,
returning TRUE
when the inputs are TRUE
and FALSE
respectively.
The for is_true
, is_false
, is_not_true
and
is_not_false
, x
argument will be coerced to be a logical vector
if it isn't already.
Coercion to logical is optional for is_na
and is_not_na
. If
you do coerce, it means that is_na
differs in behaviour from
base::is.na
for character vector, list and data frame inputs. To
replicate the behaviour of is.na
, ensure the argument
coerce_to_logical
is FALSE
(this is the default).
Note that in assertive version 0.1-4 and prior,
is_identical_to_true/false
were named is_true/false
and the
vectorized versions were not present.
# Checks against logical values using base::identical assert_is_identical_to_true(TRUE) assert_is_identical_to_false(FALSE) assert_is_identical_to_na(NA) # Other NA types match assert_is_identical_to_na(NA_complex_) # NaN is not NA dont_stop(assert_is_identical_to_na(NaN)) # For a slightly less strict test, you can ignore attributes assert_is_identical_to_true(c(truth = TRUE), allow_attributes = TRUE) assert_is_identical_to_false(matrix(FALSE), allow_attributes = TRUE) assert_is_identical_to_na(structure(NA, class = "nanana"), allow_attributes = TRUE) # Vectorized predicates (package name explicitly given to prevent # problems with testthat name clash) x <- c(TRUE, FALSE, NA) assertive.base::is_true(x) assertive.base::is_false(x) is_na(x) # ...and their opposites is_not_true(x) is_not_false(x) is_not_na(x) # Check that at least one element fits the condition assert_any_are_true(x) assert_any_are_false(x) assert_any_are_na(x) # These checks should fail: dont_stop({ assert_is_identical_to_true(c(truth = TRUE)) assert_is_identical_to_true(1) assert_is_identical_to_true(c(TRUE, TRUE)) assert_is_identical_to_false(matrix(FALSE)) assert_is_identical_to_na(structure(NA, class = "nanana")) assert_all_are_true(x) assert_all_are_false(x) assert_all_are_na(x) }) # base::is.na has non-standard behaviour for data.frames and lists. # is_na and is_not_na coerce to logical vectors (except character input). # unlist the input or use an apply function. d <- data.frame( x = c(TRUE, FALSE, NA), y = c(0, NA, 2), z = c("a", "NA", NA) ) is.na(d) is_na(unlist(d))
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.