| vec_cast {vctrs} | R Documentation |
Cast a vector to a specified type
Description
vec_cast() provides directional conversions from one type of
vector to another. Along with vec_ptype2(), this generic forms
the foundation of type coercions in vctrs.
Usage
vec_cast(x, to, ..., x_arg = caller_arg(x), to_arg = "", call = caller_env())
vec_cast_common(..., .to = NULL, .arg = "", .call = caller_env())
## S3 method for class 'logical'
vec_cast(x, to, ...)
## S3 method for class 'integer'
vec_cast(x, to, ...)
## S3 method for class 'double'
vec_cast(x, to, ...)
## S3 method for class 'complex'
vec_cast(x, to, ...)
## S3 method for class 'raw'
vec_cast(x, to, ...)
## S3 method for class 'character'
vec_cast(x, to, ...)
## S3 method for class 'list'
vec_cast(x, to, ...)
Arguments
x |
Vectors to cast. |
to, .to |
Type to cast to. If |
... |
For |
x_arg |
Argument name for |
to_arg |
Argument name |
call, .call |
The execution environment of a currently
running function, e.g. |
.arg |
An argument name as a string. This argument will be mentioned in error messages as the input that is at the origin of a problem. |
Value
A vector the same length as x with the same type as to,
or an error if the cast is not possible. An error is generated if
information is lost when casting between compatible types (i.e. when
there is no 1-to-1 mapping for a specific value).
Implementing coercion methods
For an overview of how these generics work and their roles in vctrs, see
?theory-faq-coercion.For an example of implementing coercion methods for simple vectors, see
?howto-faq-coercion.For an example of implementing coercion methods for data frame subclasses, see
?howto-faq-coercion-data-frame.For a tutorial about implementing vctrs classes from scratch, see
vignette("s3-vector").
Dependencies of vec_cast_common()
vctrs dependencies
base dependencies
Some functions enable a base-class fallback for
vec_cast_common(). In that case the inputs are deemed compatible
when they have the same base type and inherit from
the same base class.
See Also
Call stop_incompatible_cast() when you determine from the
attributes that an input can't be cast to the target type.
Examples
# x is a double, but no information is lost
vec_cast(1, integer())
# When information is lost the cast fails
try(vec_cast(c(1, 1.5), integer()))
try(vec_cast(c(1, 2), logical()))
# You can suppress this error and get the partial results
allow_lossy_cast(vec_cast(c(1, 1.5), integer()))
allow_lossy_cast(vec_cast(c(1, 2), logical()))
# By default this suppress all lossy cast errors without
# distinction, but you can be specific about what cast is allowed
# by supplying prototypes
allow_lossy_cast(vec_cast(c(1, 1.5), integer()), to_ptype = integer())
try(allow_lossy_cast(vec_cast(c(1, 2), logical()), to_ptype = integer()))
# No sensible coercion is possible so an error is generated
try(vec_cast(1.5, factor("a")))
# Cast to common type
vec_cast_common(factor("a"), factor(c("a", "b")))