R
Beginner
1 min read
Conditionals: if, else, ifelse, and switch
Example
# Basic if / else if / else
x <- 17
if (x < 0) {
cat("negative\n")
} else if (x == 0) {
cat("zero\n")
} else {
cat("positive\n")
}
# if as an expression (returns a value)
label <- if (x %% 2 == 0) "even" else "odd"
cat(x, "is", label, "\n")
# Nested if
classify <- function(n) {
if (n < 0) {
"negative"
} else if (n < 10) {
"small positive"
} else if (n < 100) {
"medium positive"
} else {
"large positive"
}
}
classify(-3) # "negative"
classify(7) # "small positive"
classify(250) # "large positive"
# ifelse() — vectorised conditional
scores <- c(45, 72, 58, 90, 33, 81)
ifelse(scores >= 60, "pass", "fail")
# "fail" "pass" "fail" "pass" "fail" "pass"
# Chained ifelse (poor readability; prefer dplyr::case_when)
grade <- ifelse(scores >= 90, "A",
ifelse(scores >= 80, "B",
ifelse(scores >= 70, "C",
ifelse(scores >= 60, "D", "F"))))
grade # "F" "C" "F" "A" "F" "B"
# switch() — dispatch on a value
describe_type <- function(type) {
switch(type,
numeric = "a number",
character = "a string",
logical = "TRUE or FALSE",
"unknown type" # default
)
}
describe_type("numeric") # "a number"
describe_type("logical") # "TRUE or FALSE"
describe_type("list") # "unknown type"