Arithmetic {base}R Documentation

Arithmetic Operators


These binary operators perform arithmetic on numeric or complex vectors (or objects which can be coerced to them).


x + y
x - y
x * y
x / y
x ^ y
x %% y
x %/% y


x, y numeric or complex vectors or objects which can be coerced to such, or other objects for which methods have been written.


The binary arithmetic operators are generic functions: methods can be written for them individually or via the Ops) group generic function.

If applied to arrays the result will be an array if this is sensible (for example it will not if the recycling rule has been invoked).

Logical vectors will be coerced to numeric vectors, FALSE having value 0 and TRUE having value one.

1 ^ y and y ^ 0 are 1, always. x ^ y should also give the proper “limit” result when either argument is infinite (i.e., +- Inf).

Objects such as arrays or time-series can be operated on this way provided they are conformable.

For real arguments, %% can be subject to catastrophic loss of accuracy if x is much larger than y, and a warning is given if this is detected.


They return numeric vectors containing the result of the element by element operations. The elements of shorter vectors are recycled as necessary (with a warning when they are recycled only fractionally). The operators are + for addition, - for subtraction, * for multiplication, / for division and ^ for exponentiation.
%% indicates x mod y and %/% indicates integer division. It is guaranteed that x == (x %% y) + y * ( x %/% y ) (up to rounding error) unless y == 0 where the result is NA or NaN (depending on the typeof of the arguments).


Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.

See Also

sqrt for miscellaneous and Special for special mathematical functions.

Syntax for operator precedence.


x <- -1:12
x + 1
2 * x + 3
x %% 2 #-- is periodic
x %/% 5

[Package base version 2.1.0 Index]