Description Usage Arguments Details Value Examples
Use ensure_that (imperitive form) to ensure conditions for a value "on
the fly". The present tense form, ensures_that is used to make
reusable "contracts" (functions) which can subsequently be applied to values;
see examples below. It is also possible to check (rather than ensure) whether
conditions are satisfied; the check_that function works like
ensure_that but will return TRUE or FALSE.
1 2 3 4 5 6 7 8 9 10 11 |
. |
The value which is to be ensured. |
... |
conditions which must pass for the ensuring contract to be
fulfilled. Any named argument will treated as values available when
evaluating the conditions. To reference the value itself use the
dot-placeholder, |
fail_with |
Either a unary function (accepting a |
err_desc |
A character string with an additional error description. |
It is possible to specify custom error message for specific
conditions to make them more readable and user-friendly. To do this use a
formula condition ~ err.message, where err.message is a single
character value.
Existing contracts can be added as a condition argument, which will add the
conditions from the existing contract to the new contract (along with any
assigned values). To do this use (unary) + to indicate that an
argument is a contract. See example below.
It is important to note that a condition is only satisfied if it evaluates to
TRUE (tested with isTRUE), i.e. a vector with several
TRUEs will fail, so be sure to use all or any in such a
case.
The functions ensure ensures, and check are short-hand
aliases for their *_that counterparts.
ensures_that returns an ensuring function; ensure_that
returns the value itself on success. check_that returns TRUE
on success, and FALSE otherwise.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | ## Not run:
ensure_that(1:10, is.integer)
# Examples below will use the magrittr pipe
library(magrittr)
# Create a contract which can ensure that a matrix is square.
ensure_square <- ensures_that(NCOL(.) == NROW(.))
# apply it.
A <-
diag(4) %>%
ensure_square
# Without the pipe operator:
A <- ensure_square(diag(4))
# Ensure on the fly (this will pass the test)
A <-
matrix(runif(16), 4, 4) %>%
ensure_that(ncol(.) == nrow(.), all(. <= 1))
# This will raise an error
A <-
matrix(NA, 4, 4) %>%
ensure_that(. %>% anyNA %>% not)
# Tweak failure:
A <-
1:10 %>%
ensure_that(all(. < 5), err_desc = "Number tests!")
# A default value for failure situations:
A <-
1:10 %>%
ensure_that(all(. < 5), fail_with = NA)
# Suppose you had an email function:
email_err <- function(e) {email(e$message); stop(e)}
A <-
1:10 %>%
ensure_that(all(. < 5), fail_with = email_err)
# Two similar contracts, one extending the other.
# Note also that custom message is used for A
A <- ensures_that(all(.) > 0 ~ "Not all values are positive")
B <- ensures_that(!any(is.na(.)) ~ "There are missing values", +A)
B(c(-5:5, NA))
## End(Not run)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.