0% found this document useful (0 votes)
40 views

Control Flow - If Else Statement

The document discusses control flow in R programming using if and else statements. It provides examples of using if and else statements to check conditions, validate inputs, assign grades, and categorize values. Control flow allows executing code conditionally and non-linearly based on evaluation of logical expressions.

Uploaded by

Nur Syazliana
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
40 views

Control Flow - If Else Statement

The document discusses control flow in R programming using if and else statements. It provides examples of using if and else statements to check conditions, validate inputs, assign grades, and categorize values. Control flow allows executing code conditionally and non-linearly based on evaluation of logical expressions.

Uploaded by

Nur Syazliana
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 9

10/26/23, 11:01 AM Control Flow - If Else Statement

Control Flow - If Else Statement


AUTHOR
Dr. Mohammad Nasir Abdullah

Control Flow - If Else Statement

Control Flow is a critical concept in programming that allows for the execution of code in a non-linear
fashion.

Control flow structures in R allow you to specify which pieces of code are to be executed and in what
order. These structures enable you to create dynamic programs that can make decisions, repeat
actions, and handle different input scenarios.

'if' Statement
The if statement is a fundamental component of flow control in R. It evaluates a given condition, and
if the condition is TRUE , the block of code within the if statement is executed. If the condition is
FALSE , the if statement is ignored, and the program continues to the next line of code outside the
if block.

The basic syntax of an if statement in R is as follows:

if (condition) {
# code to be executed if the condition is TRUE
}

Example 1: Checking for positive number

x <- 5
if (x > 0) {
print("x is positive")
}

[1] "x is positive"

if else statement
The else clause can be added to execute code when the condition is FALSE .

x <- -3
if (x > 0) {
print("x is positive")
} else {
print("x is not positive")
}

[1] "x is not positive"

https://sta334.s3.ap-southeast-1.amazonaw s.com/flow control/Control+Flow _files/Control+Flow .html 1/9


10/26/23, 11:01 AM Control Flow - If Else Statement

Example 2: Validating Age for Voting


In this example, the if statement checks whether a person is eligible to vote based on their age. If the
age is 18 or above, a message is printed indicating eligibility to vote.

age <- 20
if (age >= 18) {
print("You are eligible to vote.")
}

[1] "You are eligible to vote."

Example 4: Checking for Non-Negative Number


This example demonstrates the use of the if statement to check whether a number is non-negative
(i.e., either positive or zero).

number <- -5
if (number >= 0) {
print(paste(number, "is a non-negative number."))
} else {
print(paste(number, "is a negative number."))
}

[1] "-5 is a negative number."

Example 5: Validating Password Length


This example uses the if-else statement to validate the length of a password.

password <- "Nasir"


if (nchar(password) >= 8) { print("The password length is valid.")
} else {
print("The password length is invalid. It must be at least 8 characters long.")
}

[1] "The password length is invalid. It must be at least 8 characters long."

Example 6: Changing variable to factor datatype

# Using a loop to go through each column of the dataset


for (var in names(mtcars)) {
# Check if the current column name is one of the desired columns
if (var %in% c("cyl", "am", "vs", "gear", "carb")) {
mtcars[[var]] <- as.factor(mtcars[[var]])
} else {
# Do nothing (or any other operation you want) for other columns
next
}
}

https://sta334.s3.ap-southeast-1.amazonaw s.com/flow control/Control+Flow _files/Control+Flow .html 2/9


10/26/23, 11:01 AM Control Flow - If Else Statement
# Checking the structure of the modified dataset
str(mtcars)

'data.frame': 32 obs. of 11 variables:


$ mpg : num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
$ cyl : Factor w/ 3 levels "4","6","8": 2 2 1 2 3 2 3 1 1 2 ...
$ disp: num 160 160 108 258 360 ...
$ hp : num 110 110 93 110 175 105 245 62 95 123 ...
$ drat: num 3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
$ wt : num 2.62 2.88 2.32 3.21 3.44 ...
$ qsec: num 16.5 17 18.6 19.4 17 ...
$ vs : Factor w/ 2 levels "0","1": 1 1 2 2 1 2 1 2 2 2 ...
$ am : Factor w/ 2 levels "0","1": 2 2 2 1 1 1 1 1 1 1 ...
$ gear: Factor w/ 3 levels "3","4","5": 2 2 2 1 1 1 1 2 2 2 ...
$ carb: Factor w/ 6 levels "1","2","3","4",..: 4 4 1 1 2 1 4 2 2 4 ...
For multiple conditions, use else if .

x <- 0
if (x > 0) {
print("x is positive")
} else if (x < 0) {
print("x is negative")
} else {
print("x is zero")
}

[1] "x is zero"

Example 7: Grade Assignment


Assign grades based on numeric scores.

score <- 85

if (score >= 90) {


print("Grade: A")
} else if (score >= 80) {
print("Grade: B")
} else if (score >= 70) {
print("Grade: C")
} else if (score >= 60) {
print("Grade: D")
} else {
print("Grade: F")
}

[1] "Grade: B"

Example 8: Day of the Week


Display a message based on the day of the week.

https://sta334.s3.ap-southeast-1.amazonaw s.com/flow control/Control+Flow _files/Control+Flow .html 3/9


10/26/23, 11:01 AM Control Flow - If Else Statement

day <- "Sunday"

if (day == "Saturday" || day == "Sunday") {


print("It's the weekend!")
} else if (day == "Monday") {
print("Start of the work week!")
} else if (day == "Friday") {
print("Almost the weekend!")
} else {
print("It's a weekday.")
}

[1] "It's the weekend!"

Example 9: Age Groups


Categorize individuals into age groups.

age <- 25

if (age <= 12) {


print("Child")
} else if (age <= 19) {
print("Teenager")
} else if (age <= 35) {
print("Young Adult")
} else if (age <= 60) {
print("Adult")
} else {
print("Senior")
}

[1] "Young Adult"

Example 10: Checking Number Properties


Determine if a number is negative, zero, or positive and if it’s even or odd.

num <- 7

if (num < 0) {
print("Negative")
if (num %% 2 == 0) {
print("Even")
} else {
print("Odd")
}
} else if (num == 0) {
print("Zero")
} else {
print("Positive")
if (num %% 2 == 0) {
print("Even")

https://sta334.s3.ap-southeast-1.amazonaw s.com/flow control/Control+Flow _files/Control+Flow .html 4/9


10/26/23, 11:01 AM Control Flow - If Else Statement
} else {
print("Odd")
}
}

[1] "Positive"
[1] "Odd"

A larger perspectives of if-else

Example 11: Categorizing Student Grades


Suppose we have a vector containing scores of multiple students. We want to categorize each score
into a grade and store the results in a new vector.

# Sample student scores


scores <- c(95, 87, 78, 85, 62, 90, 73, 88, 81, 56)

# Initialize an empty vector for grades


grades <- character(length(scores))

# Categorize each score


for (i in 1:length(scores)) {
if (scores[i] >= 90) {
grades[i] <- "A"
} else if (scores[i] >= 80) {
grades[i] <- "B"
} else if (scores[i] >= 70) {
grades[i] <- "C"
} else if (scores[i] >= 60) {
grades[i] <- "D"
} else {
grades[i] <- "F"
}
}

# Print the grades


print(grades)

[1] "A" "B" "C" "B" "D" "A" "C" "B" "B" "F"

Example 12: Checking Positive, Negative, and Zero Values


Given a vector of numbers, determine how many are positive, negative, and zero.

# Sample vector of numbers


numbers <- c(-5, 2, 9, 0, -1, 0, 7, -3, 0, 4)

# Initialize counters
count_positive <- 0
count_negative <- 0
count_zero <- 0

https://sta334.s3.ap-southeast-1.amazonaw s.com/flow control/Control+Flow _files/Control+Flow .html 5/9


10/26/23, 11:01 AM Control Flow - If Else Statement

# Check each number


for (num in numbers) {
if (num > 0) {
count_positive <- count_positive + 1
} else if (num < 0) {
count_negative <- count_negative + 1
} else {
count_zero <- count_zero + 1
}
}

# Print results
cat("Positive numbers:", count_positive, "\n")

Positive numbers: 4

cat("Negative numbers:", count_negative, "\n")

Negative numbers: 3

cat("Zeros:", count_zero, "\n")

Zeros: 3

Example 13: Group Ages


Given a vector of ages, categorize them into different age groups.

# Sample ages
ages <- c(25, 42, 15, 33, 68, 72, 19, 56, 9, 31)

# Initialize an empty vector for age groups


age_groups <- character(length(ages))

# Categorize each age


for (i in 1:length(ages)) {
if (ages[i] <= 12) {
age_groups[i] <- "Child"
} else if (ages[i] <= 19) {
age_groups[i] <- "Teenager"
} else if (ages[i] <= 35) {
age_groups[i] <- "Young Adult"
} else if (ages[i] <= 60) {
age_groups[i] <- "Adult"
} else {
age_groups[i] <- "Senior"
}
}

# Print the age groups


print(age_groups)

https://sta334.s3.ap-southeast-1.amazonaw s.com/flow control/Control+Flow _files/Control+Flow .html 6/9


10/26/23, 11:01 AM Control Flow - If Else Statement

[1] "Young Adult" "Adult" "Teenager" "Young Adult" "Senior"


[6] "Senior" "Teenager" "Adult" "Child" "Young Adult"

ifelse statement
The ifelse() function in R is a vectorized alternative to the if-else statement, allowing for more
concise and efficient conditional operations on vectors. It evaluates a condition for each element of a
vector and returns a new vector with values assigned based on whether the condition is TRUE or
FALSE .

The basic syntax of the ifelse() function in R is as follows:

ifelse(test_expression, x, y)

• test_expression: The condition to be evaluated.

• x: The value to be returned in the new vector if the test_expression is TRUE.

• y: The value to be returned in the new vector if the test_expression is FALSE.

Example 14: Categorizing Numbers as Positive or Negative


In this example, the ifelse() function is used to categorize a vector of numbers as either “Positive” or
“Negative”.

numbers <- c(-3, 2, -1, 5, -4)


categories <- ifelse(numbers > 0, "Positive", "Negative")

print(categories)

[1] "Negative" "Positive" "Negative" "Positive" "Negative"

Example 15: Assigning Pass or Fail to Student Grades


This example demonstrates the use of the ifelse() function to assign “Pass” or “Fail” to a vector of
student grades.

grades <- c(85, 40, 76, 59, 90)


results <- ifelse(grades >= 60, "Pass", "Fail")
print(results)

[1] "Pass" "Fail" "Pass" "Fail" "Pass"

Example 16: Recoding Factors


Suppose you have a vector of grades and you want to recode them into “Pass” and “Fail”.

grades <- c("A", "B", "C", "D", "F")


status <- ifelse(grades %in% c("A", "B", "C"), "Pass", "Fail")
print(status)

[1] "Pass" "Pass" "Pass" "Fail" "Fail"

https://sta334.s3.ap-southeast-1.amazonaw s.com/flow control/Control+Flow _files/Control+Flow .html 7/9


10/26/23, 11:01 AM Control Flow - If Else Statement

Example 17: Handling Missing Values


Replace NA values in a vector with the mean of non-missing values.

data <- c(1, 2, NA, 4, NA, 6)


mean_value <- mean(data, na.rm = TRUE)
filled_data <- ifelse(is.na(data), mean_value, data)
print(filled_data)

[1] 1.00 2.00 3.25 4.00 3.25 6.00

Example 18: Determining the Parity of Numbers


This example uses the ifelse() function to determine whether the numbers in a vector are odd or
even.

numbers <- c(1, 2, 3, 4, 5)


parity <- ifelse(numbers %% 2 == 0, "Even", "Odd")
print(parity)

[1] "Odd" "Even" "Odd" "Even" "Odd"

Exercise

Exercise 1: Temperature Classification

Given a vector of temperatures in Celsius, classify each temperature as “Cold” if it’s below 10°C,
“Moderate” if it’s between 10°C and 25°C, and “Hot” if it’s above 25°C. Store the results in a new
vector and print it.

temperatures <- c(15, 8, 27, 12, 30, 9, 23, 5, 19)

Exercise 2: Counting Vowel Occurrences

You have a vector containing single characters. Write a program to count the number of occurrences
of vowels (a, e, i, o, u) in the vector.

chars <- c('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'o', 'p', 'u')

Exercise 3: Student Pass/Fail Status

Given a vector of student scores, determine how many students passed and how many failed. Assume
a passing score is 50 or above.

scores <- c(45, 56, 67, 48, 90, 75, 33, 52)

Exercise 4: Categorizing Heights

You have a vector containing heights of various individuals in centimeters. Categorize each height as
“Short” if below 160cm, “Average” if between 160cm and 180cm, and “Tall” if above 180cm. Store the

https://sta334.s3.ap-southeast-1.amazonaw s.com/flow control/Control+Flow _files/Control+Flow .html 8/9


10/26/23, 11:01 AM Control Flow - If Else Statement

results in a new vector.

heights <- c(155, 162, 171, 185, 150, 178, 182, 165, 170)

Exercise 5: Price Discounts

You have a vector containing the prices of items in a store. Any item that costs more than $100 gets a
10% discount, while items costing $50 or less get a 5% discount. Adjust the prices according to these
criteria using the ifelse() function.

prices <- c(45, 150, 75, 30, 110, 60)

Exercise 6: Student Remarks

Given a vector of student scores, provide remarks based on the following criteria:

90 and above: “Excellent”

75 to 89: “Very Good”

60 to 74: “Good”

50 to 59: “Average”

Below 50: “Poor”

Use the ifelse() function to categorize the student scores into the respective remarks.

scores <- c(85, 93, 67, 58, 72, 45)

Exercise 7: Weather Condition

You have a vector containing daily average temperatures. Classify each day’s weather as:

Below 0°C: “Freezing”

0°C to 10°C: “Cold”

11°C to 20°C: “Mild”

21°C to 30°C: “Warm”

Above 30°C: “Hot”

Use the ifelse() function to categorize the temperatures.

temperatures <- c(15, -2, 28, 8, 20, 32)

https://sta334.s3.ap-southeast-1.amazonaw s.com/flow control/Control+Flow _files/Control+Flow .html 9/9

You might also like