By default, lossy casts are an error. Use allow_lossy_cast()
to
silence these errors and continue with the partial results. In this
case the lost values are typically set to NA
or to a lower value
resolution, depending on the type of cast.
Lossy cast errors are thrown by maybe_lossy_cast()
. Unlike
functions prefixed with stop_
, maybe_lossy_cast()
usually
returns a result. If a lossy cast is detected, it throws an error,
unless it's been wrapped in allow_lossy_cast()
. In that case, it
returns the result silently.
maybe_lossy_cast(
result,
x,
to,
lossy = NULL,
locations = NULL,
...,
loss_type = c("precision", "generality"),
x_arg,
to_arg,
call = caller_env(),
details = NULL,
message = NULL,
class = NULL,
.deprecation = FALSE
)
The result of a potentially lossy cast.
Vectors to cast.
Type to cast to.
A logical vector indicating which elements of result
were lossy.
Can also be a single TRUE
, but note that locations
picks up
locations from this vector by default. In this case, supply your
own location vector, possibly empty.
An optional integer vector giving the
locations where x
lost information.
Only use these fields when creating a subclass.
The kind of lossy cast to be mentioned in error messages. Can be loss of precision (for instance from double to integer) or loss of generality (from character to factor).
Argument name for x
, used in error messages to
inform the user about the locations of incompatible types
(see stop_incompatible_type()
).
Argument name to
used in error messages to
inform the user about the locations of incompatible types
(see stop_incompatible_type()
).
The execution environment of a currently
running function, e.g. caller_env()
. The function will be
mentioned in error messages as the source of the error. See the
call
argument of abort()
for more information.
Any additional human readable details.
An overriding message for the error. details
and
message
are mutually exclusive, supplying both is an error.
If TRUE
, the error is downgraded to a
deprecation warning. This is useful for transitioning your class
to a stricter conversion scheme. The warning advises your users
to wrap their code with allow_lossy_cast()
.