vec_cast | R Documentation |
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.
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, ...)
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. |
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).
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")
.
vec_cast_common()
vec_ptype2()
vec_cast()
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.
Call stop_incompatible_cast()
when you determine from the
attributes that an input can't be cast to the target type.
# 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")))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.