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, whileas.integer()andas.double()use the integer index of the factor.
Value
The input as an integer vector, or an error condition with classes
<stbl-error>, <stbl-condition>, <rlang_error>, <error>,
<condition>, and a specific class by failure mode:
<stbl-error-coerce-integer>whenxcannot be coerced to integer.<stbl-error-incompatible_values-integer>when some values cannot be safely converted to integer.<stbl-error-bad_null>forNULLvalues whenallow_null = FALSE.
See also
Other integer functions:
are_int_ish(),
specify_int(),
stabilize_int(),
stabilize_int_scalar(),
to(),
to_int_scalar()
Other stabilization functions:
assert_contains(),
assert_not(),
assert_present(),
stabilize_all_of(),
stabilize_any_of(),
stabilize_arg(),
stabilize_chr(),
stabilize_chr_scalar(),
stabilize_date(),
stabilize_date_scalar(),
stabilize_dbl(),
stabilize_dbl_scalar(),
stabilize_df(),
stabilize_dttm(),
stabilize_dttm_scalar(),
stabilize_dur(),
stabilize_dur_scalar(),
stabilize_fct(),
stabilize_fct_scalar(),
stabilize_int(),
stabilize_int_scalar(),
stabilize_lgl(),
stabilize_lgl_scalar(),
stabilize_lst(),
stabilize_one_of(),
stabilize_time(),
stabilize_time_scalar(),
to_chr(),
to_chr_scalar(),
to_date(),
to_date_scalar(),
to_dbl(),
to_dbl_scalar(),
to_dttm(),
to_dttm_scalar(),
to_dur(),
to_dur_scalar(),
to_fct(),
to_fct_scalar(),
to_int_scalar(),
to_lgl(),
to_lgl_scalar(),
to_time(),
to_time_scalar()
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"