Skip to contents

Checks whether a vector can be coerced to integer without losing information, returning it silently if so. Otherwise an informative error message is signaled. to_integer is a synonym of to_int().

Usage

to_int(
  x,
  ...,
  x_arg = caller_arg(x),
  call = caller_env(),
  x_class = object_type(x)
)

to_integer(
  x,
  ...,
  x_arg = caller_arg(x),
  call = caller_env(),
  x_class = object_type(x)
)

# S3 method for class '`NULL`'
to_int(x, ..., allow_null = TRUE, x_arg = caller_arg(x), call = caller_env())

# S3 method for class 'character'
to_int(
  x,
  ...,
  coerce_character = TRUE,
  x_arg = caller_arg(x),
  call = caller_env(),
  x_class = object_type(x)
)

# S3 method for class 'factor'
to_int(
  x,
  ...,
  coerce_factor = TRUE,
  x_arg = caller_arg(x),
  call = caller_env(),
  x_class = object_type(x)
)

Arguments

x

The object to stabilize.

...

Arguments passed to methods.

x_arg

(character(1)) The name of the object being stabilized to use in error messages. The automatic value will work in most cases, or pass it through from higher-level functions to make error messages clearer in unexported functions.

call

(environment) The execution environment to mention as the source of error messages.

x_class

(character(1)) The class name of the object being stabilized to use in error messages. Use this if you remove a special class from the object before checking its coercion, but want the error message to match the original class.

allow_null

(logical(1)) Is NULL an acceptable value?

coerce_character

(logical(1)) Should character vectors such as "1" and "2.0" be considered numeric-ish?

coerce_factor

(logical(1)) Should factors with values such as "1" and "2.0" be considered numeric-ish? Note that this package uses the character value from the factor, while as.integer() and as.double() use the integer index of the factor.

Value

The input as an integer vector.

Examples

to_int(1:10)
#>  [1]  1  2  3  4  5  6  7  8  9 10
to_int("1")
#> [1] 1
to_int(1 + 0i)
#> [1] 1
to_int(NULL)
#> NULL
try(to_int(c(1, 2, 3.1, 4, 5.2)))
#> Error in eval(expr, envir) : 
#>   `c(1, 2, 3.1, 4, 5.2)` <double> must be coercible to <integer>
#>  Can't convert some values due to loss of precision.
#>  Locations: 3 and 5
#>  Values: "3.1" and "5.2"
try(to_int("1", coerce_character = FALSE))
#> Error in eval(expr, envir) : 
#>   Can't coerce `"1"` <character> to <integer>.
try(to_int(c("1", "2", "3.1", "4", "5.2")))
#> Error in eval(expr, envir) : 
#>   `c("1", "2", "3.1", "4", "5.2")` <character> must be coercible to
#> <integer>
#>  Can't convert some values due to loss of precision.
#>  Locations: 3 and 5
#>  Values: "3.1" and "5.2"