# vec_arith: Arithmetic operations In vctrs: Vector Helpers

 vec_arith R Documentation

## Arithmetic operations

### Description

This generic provides a common double dispatch mechanism for all infix operators (`+`, `-`, `/`, `*`, `^`, `%%`, `%/%`, `!`, `&`, `|`). It is used to power the default arithmetic and boolean operators for vctrs objects, overcoming the limitations of the base Ops generic.

### Usage

```vec_arith(op, x, y, ...)

## Default S3 method:
vec_arith(op, x, y, ...)

## S3 method for class 'logical'
vec_arith(op, x, y, ...)

## S3 method for class 'numeric'
vec_arith(op, x, y, ...)

vec_arith_base(op, x, y)

MISSING()
```

### Arguments

 `op` An arithmetic operator as a string `x, y` A pair of vectors. For `!`, unary `+` and unary `-`, `y` will be a sentinel object of class `MISSING`, as created by `MISSING()`. `...` These dots are for future extensions and must be empty.

### Details

`vec_arith_base()` is provided as a convenience for writing methods. It recycles `x` and `y` to common length then calls the base operator with the underlying `vec_data()`.

`vec_arith()` is also used in `diff.vctrs_vctr()` method via `-`.

`stop_incompatible_op()` for signalling that an arithmetic operation is not permitted/supported.

See `vec_math()` for the equivalent for the unary mathematical functions.

### Examples

```d <- as.Date("2018-01-01")
dt <- as.POSIXct("2018-01-02 12:00")
t <- as.difftime(12, unit = "hours")

vec_arith("-", dt, 1)
vec_arith("-", dt, t)
vec_arith("-", dt, d)

vec_arith("+", dt, 86400)
vec_arith("+", dt, t)
vec_arith("+", t, t)

vec_arith("/", t, t)
vec_arith("/", t, 2)

vec_arith("*", t, 2)
```

vctrs documentation built on Jan. 23, 2023, 5:45 p.m.