Exercise answers

set.seed(19790801) library(assertive) knitr::opts_chunk$set(error = FALSE)

1. Introduction

  1. Just type the code in the question!
  2. example(assert_is_vector).
  3. example(assert_all_are_whole_numbers)
  4. example(is_us_zip_code)

2. Checking function inputs

  1. The answer is a little subjective.

    For x, I suggest simply enforcing that it is numeric using assert_is_numeric(x).

    center and constant are expected to be single numbers. You can either throw an error if this is not the case using assert_is_a_number(center), etc., or have a slightly more forgiving check for numeric followed by retrieving of the first value using center <- use_first(center), etc.. For very strict checking, you may also wish to ensure that center and constant are not missing or NaN using assert_all_are_not_na(c(center, constant)).

    na.rm, low and high are expected to be logical values. You can throw an error for inputs that don't conform using assert_is_a_bool(na.rm), etc.. I suggest being more forgiving by extracting the first element and coercing to logical using na.rm <- coerce_to(use_first(na.rm), "logical"), etc.