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 |