This abstract class provides a set of useful default methods that makes it
considerably easier to get started with a new S3 vector class. See
vignette("s3-vector")
to learn how to use it to create your own S3
vector classes.
new_vctr(.data, ..., class = character())
Foundation of class. Must be a vector
Name-value pairs defining attributes
Name of subclass.
The vctr class provides methods for many base generics using a smaller set of generics defined by this package. Generally, you should think carefully before overriding any of the methods that vctrs implements for you as they've been carefully planned to be internally consistent.
[[
and [
use NextMethod()
dispatch to the underlying base function,
then restore attributes with vec_restore()
.
rep()
and length<-
work similarly.
[[<-
and [<-
cast value
to same type as x
, then call
NextMethod()
.
as.logical()
, as.integer()
, as.numeric()
, as.character()
,
as.Date()
and as.POSIXct()
methods call vec_cast()
.
The as.list()
method calls [[
repeatedly, and the as.data.frame()
method uses a standard technique to wrap a vector in a data frame.
as.factor()
, as.ordered()
and as.difftime()
are not generic functions
in base R, but have been reimplemented as generics in the generics
package. vctrs
extends these and calls vec_cast()
. To inherit this
behavior in a package, import and re-export the generic of interest
from generics
.
==
, !=
, unique()
, anyDuplicated()
, and is.na()
use
vec_proxy_equal()
.
<
, <=
, >=
, >
, min()
, max()
, median()
, quantile()
,
and xtfrm()
methods use vec_proxy_compare()
.
+
, -
, /
, *
, ^
, %%
, %/%
, !
, &
, and |
operators
use vec_arith()
.
Mathematical operations including the Summary group generics (max
,
min
, range
, prod
, sum
, any
, all
), the Math group generics
(abs
, sign
, etc), mean()
, is.nan()
, is.finite()
, and
is.infinite()
use vec_math()
.
dims()
, dims<-()
, dimnames()
, dimnames<-
, levels()
, and
levels<-
methods throw errors.