Most of the operators that we use in R are binary operators (having two operands). Hence, they are infix operators, used between the operands. Actually, these operators do a function call in the background.

For example, the expression `a+b`

is actually calling the function
``+`()`

with the arguments `a`

and `b`

, as
``+`(a, b)`

.

**Note:** the back tick (```

), this is important as
the function name contains special symbols.

Following are some example expressions along with the actual functions that get called in the background.

## Example: How infix operators work in R?

```
> 5+3
[1] 8
> `+`(5,3)
[1] 8
> 5-3
[1] 2
> `-`(5,3)
[1] 2
> 5*3-1
[1] 14
> `-`(`*`(5,3),1)
[1] 14
```

It is possible to create user-defined infix operators in R. This is done by
naming a function that starts and ends with `%`

.

Following is an example of user-defined infix operator to see if a number is exactly divisible by another.

## Example: User defined infix operator

```
`%divisible%` <- function(x,y)
{
if (x%%y ==0) return (TRUE)
else return (FALSE)
}
```

This function can be used as infix operator `a %divisible% b`

or as
a function call ``%divisible%`(a, b)`

. Both are the same.

```
> 10 %divisible% 3
[1] FALSE
> 10 %divisible% 2
[1] TRUE
> `%divisible%`(10,5)
[1] TRUE
```

Things to remember while defining your own infix operators are that they must
start and end with `%`

. Surround it with back tick (```

)
in the function definition and escape any special symbols.

## Predefined infix operators in R

%% | Remainder operator |

%/% | Integer division |

%*% | Matrix multiplication |

%o% | Outer product |

%x% | Kronecker product |

%in% | Matching operator |