is_whole_number: Is the input a whole number?

Description Usage Arguments Value Note See Also Examples

Description

Checks that the (probably floating point) input is a whole number.

Usage

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
assert_all_numbers_are_whole_numbers(x, tol = 100 * .Machine$double.eps,
  na_ignore = FALSE, severity = getOption("assertive.severity", "stop"))

assert_any_numbers_are_whole_numbers(x, tol = 100 * .Machine$double.eps,
  na_ignore = FALSE, severity = getOption("assertive.severity", "stop"))

assert_all_are_whole_numbers(x, tol = 100 * .Machine$double.eps,
  na_ignore = FALSE, severity = getOption("assertive.severity", "stop"))

assert_any_are_whole_numbers(x, tol = 100 * .Machine$double.eps,
  na_ignore = FALSE, severity = getOption("assertive.severity", "stop"))

is_whole_number(x, tol = 100 * .Machine$double.eps,
  .xname = get_name_in_parent(x))

Arguments

x

Input to check.

tol

Differences smaller than tol are not considered.

na_ignore

A logical value. If FALSE, NA values cause an error; otherwise they do not. Like na.rm in many stats package functions, except that the position of the failing values does not change.

severity

How severe should the consequences of the assertion be? Either "stop", "warning", "message", or "none".

.xname

Not intended to be used directly.

Value

TRUE if the input is a whole number.

Note

The term whole number is used to distinguish from integer in that the input x need not have type integer. In fact it is expected that x will be numeric.

See Also

is_divisible_by

Examples

1
2
3
4
5
6
# 1, plus or minus a very small number
x <- 1 + c(0, .Machine$double.eps, -.Machine$double.neg.eps)
# By default, you get a bit of tolerance for rounding errors
is_whole_number(x)
# Set the tolerance to zero for exact matching.
is_whole_number(x, tol = 0)

Example output

                  1  1.0000000000000002 0.99999999999999989 
               TRUE                TRUE                TRUE 
There were 2 failures:
  Position               Value      Cause
1        2  1.0000000000000002 fractional
2        3 0.99999999999999989 fractional

assertive.numbers documentation built on May 2, 2019, 3:30 p.m.