# R Operators

R has many operators to carry out different mathematical and logical operations. Operators perform tasks including arithmetic, logical and bitwise operations.

## Type of operators in R

Operators in R can mainly be classified into the following categories:

• Arithmetic Operators
• Relational Operators
• Logical Operators
• Assignment Operators

## R Arithmetic Operators

These operators are used to carry out mathematical operations like addition and multiplication. Here is a list of arithmetic operators available in R.

Operator Description
- Subtraction
* Multiplication
/ Division
^ Exponent
%% Modulus(Remainder from division)
%/% Integer Division

Let's look at an example illustrating the use of the above operators:

``````x <- 5
y <- 16
x + y
x - y
x * y
y / x
y %/% x
y %% x
y ^ x``````

Output

```[1] 21
[1] -11
[1] 80
[1] 3.2
[1] 3
[1] 1
[1] 1048576```

## R Relational Operators

Relational operators are used to compare between values. Here is a list of relational operators available in R.

Operator Description
Less than
> Greater than
Less than or equal to
>= Greater than or equal to
== Equal to
!= Not equal to

Let's see an example for this:

``````x <- 5
y <- 16
x < y
x > y
x <= 5
y >= 20
y == 16
x != 5``````

Output

```[1] TRUE
[1] FALSE
[1] TRUE
[1] FALSE
[1] TRUE
[1] FALSE```

### Operation on Vectors

The above mentioned operators work on vectors. The variables used above were in fact single element vectors.

We can use the function `c()` (as in concatenate) to make vectors in R.

All operations are carried out in element-wise fashion. Here is an example.

``````x <- c(2, 8, 3)
y <- c(6, 4, 1)
x + y
x > y``````

Output

```[1]  8 12  4
[1] FALSE  TRUE  TRUE```

When there is a mismatch in length (number of elements) of operand vectors, the elements in the shorter one are recycled in a cyclic manner to match the length of the longer one.

R will issue a warning if the length of the longer vector is not an integral multiple of the shorter vector.

``````x <- c(2, 1, 8, 3)
y <- c(9, 4)
x + y
x - 1
x + c(1, 2, 3)``````

Output

```[1] 11  5 17  7
[1]1 0 7 2
[1]  3  3 11  4
Warning message:
In x + c(1, 2, 3) :
longer object length is not a multiple of shorter object length```

## R Logical Operators

Logical operators are used to carry out Boolean operations like `AND`, `OR` etc.

Operator Description
! Logical NOT
& Element-wise logical AND
&& Logical AND
| Element-wise logical OR
|| Logical OR

Operators `&` and `|` perform element-wise operation producing result having length of the longer operand.

But `&&` and `||` examines only the first element of the operands resulting in a single length logical vector.

Zero is considered `FALSE` and non-zero numbers are taken as `TRUE`. Let's see an example for this:

``````x <- c(TRUE, FALSE, 0, 6)
y <- c(FALSE, TRUE, FALSE, TRUE)
!x
x & y
x && y
x | y
x || y``````

Output

```[1] FALSE  TRUE  TRUE FALSE
[1] FALSE FALSE FALSE  TRUE
[1] FALSE
[1]  TRUE  TRUE FALSE  TRUE
[1] TRUE```

## R Assignment Operators

These operators are used to assign values to variables.

Operator Description
Leftwards assignment
->, ->> Rightwards assignment

The operators `<-` and `=` can be used, almost interchangeably, to assign to variables in the same environment.

The `<<-` operator is used for assigning to variables in the parent environments (more like global assignments). The rightward assignments, although available, are rarely used.

``````x <- 5
x
x <- 9
x
10 -> x
x``````

Output

```[1] 5
[1] 9
[1] 10```