vctr (vector) S3 class

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.

Base methods

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 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 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.

  • new_vctr
  • vctr
Documentation reproduced from package vctrs, version 0.1.0, License: GPL-3

Community examples

Looks like there are no examples yet.