R Misc Operators
Beyond arithmetic, comparison, logical, and assignment operators, R provides several miscellaneous operators that appear frequently in real code. These handle sequences, membership tests, and pipe operations.
The Colon Operator : (Sequence Generator)
1:10 # 1 2 3 4 5 6 7 8 9 10 5:1 # 5 4 3 2 1 (descending) -3:3 # -3 -2 -1 0 1 2 3
The colon operator generates integer sequences. It is one of the most used operators in R — especially in for loops and vector indexing.
for (i in 1:5) {
cat(i, "")
}
# 1 2 3 4 5
The %in% Operator (Membership Test)
"mango" %in% c("apple", "mango", "banana") # TRUE
"grape" %in% c("apple", "mango", "banana") # FALSE
# Works on vectors too
fruits <- c("kiwi", "mango", "peach", "fig")
fruits %in% c("mango", "fig")
# [1] FALSE TRUE FALSE TRUE
The %% and %/% Operators (Arithmetic)
17 %% 5 # 2 (remainder) 17 %/% 5 # 3 (quotient, whole part only)
These appeared in arithmetic operators but qualify as miscellaneous because of their %..% syntax, which is how R marks infix operators.
The Pipe Operator |> (Native, R 4.1+)
The pipe passes the result of one expression as the first argument to the next function. Think of it as "then do this".
# Without pipe result <- round(sqrt(mean(c(4, 9, 16, 25))), 2) # With native pipe |> result <- c(4, 9, 16, 25) |> mean() |> sqrt() |> round(2) print(result) # 3.54
Flow diagram with pipe:
c(4,9,16,25) ──|>──> mean() ──|>──> sqrt() ──|>──> round(2)
↓ ↓ ↓ ↓
vector 13.5 3.67... 3.67
The Magrittr Pipe %>% (dplyr/tidyverse)
Before R 4.1 introduced |>, the %>% pipe from the magrittr package was standard. Both work similarly. The magrittr pipe is still widely used in dplyr code.
library(magrittr) c(1, 4, 9, 16) %>% sqrt() %>% sum() # 10
The %o% and %x% Operators
# Outer product 1:3 %o% 1:3 # [,1] [,2] [,3] # [1,] 1 2 3 # [2,] 2 4 6 # [3,] 3 6 9 # Kronecker product (advanced matrix operation) matrix(1:4, 2, 2) %x% matrix(1:4, 2, 2)
Creating Custom Infix Operators
R lets you define your own operators using the %name% pattern:
# Custom operator: concatenate strings without spaces `%++%` <- function(a, b) paste0(a, b) "Hello" %++% "World" # "HelloWorld" "ID" %++% 42 # "ID42"
Summary of Miscellaneous Operators
Operator Type Example
──────────────────────────────────────────────────────
: Sequence 1:10
%in% Membership test "a" %in% c("a","b")
%% Modulo 10 %% 3 = 1
%/% Integer division 10 %/% 3 = 3
|> Native pipe x |> mean()
%>% Magrittr pipe x %>% mean()
%o% Outer product 1:3 %o% 1:3
%x% Kronecker product M1 %x% M2
The sequence operator and %in% appear in almost every R script. The pipe operators become essential once you start working with data manipulation packages like dplyr. These tools make R code shorter, more readable, and easier to follow.
