R Infix Operator

In this article, you will learn about infix operators; how they actually work in R and how you can create an infix operator yourself.

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 backtick (`), 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?

We can perform arithmetic operations using infix operators like +, -, and *.

Here are the calculations we can perform using both the usual notation and the alternative notation with backticks:

# addition operation
5+3
`+`(5,3)
# subtraction operation
5-3
`-`(5,3)
# multiplication and subtraction operation
5*3-1
`-`(`*`(5,3),1)

Output

[1] 8
[1] 8
[1] 2
[1] 2
[1] 14
[1] 14

In the above example,

For Addition Operation:

  • Usual notation: 5 + 3 = 8
  • Alternative notation: `+`(5,3) = 8

For Subtraction Operation:

  • Usual notation: 5 - 3 = 2
  • Alternative notation: `-`(5,3) = 2

For Multiplication and Subtraction Operation:

  • Usual notation: 5 * 3 - 1 = 14
  • Alternative notation: `-`(`*`(5,3),1) = 14

User defined infix operator

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 a user-defined infix operator to see if a number is exactly divisible by another.

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

Output

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

This function can be used as an infix operator a %divisible% b or as a function call `%divisible%`(a, b). Both are the same.

Note: Things to remember while defining your own infix operators are that they must start and end with %. Surround it with backtick (`) in the function definition and escape any special symbols.