The for
statement in R is a bit different from what you usually use in other programming languages.
Rather than iterating over a numeric progression, R’s for
statement iterates over the items of a vector or a list. The items are iterated in the order that they appear in the vector.
Syntax
Here’s the syntax of the for
statement:
vector is a collection of objects that can be iterated over
statement(s) are executed once for each item in a vector
var takes items from a vector one by one
Basic Examples
# Iterate through a vector
colors <- c("red","green","blue","yellow")
for (x in colors) {
print(x)
}
[1] "red"
[1] "green"
[1] "blue"
[1] "yellow"
# Iterate through a list
l <- list(3.14, "Hi", c(1,2,3))
for (x in l) {
print(x)
}
[1] 3.14
[1] "Hi"
[1] 1 2 3
If you need to execute a group of statements for a specified number of times, use sequence operator :
or built-in function seq()
# Print 'Hello!' 3 times
for (x in 1:3) {
print("Hello!")
}
[1] "Hello!"
[1] "Hello!"
[1] "Hello!"
# Iterate a sequence and square each element
for (x in seq(from=2,to=8,by=2)) {
print(x^2)
}
[1] 4
[1] 16
[1] 36
[1] 64
for Loop Without Curly Braces
If you have only one statement to execute, you can skip curly braces.
# Print the numbers 0 to 4
for (x in 0:4) print(x)
[1] 0
[1] 1
[1] 2
[1] 3
[1] 4
Nested for loop
A nested for
loop is a loop within a loop. They are useful for when you want to repeat something several times for several things.
for(x in 1:3) {
for(y in 1:2) {
print(paste(x, y))
}
}
[1] "1 1"
[1] "1 2"
[1] "2 1"
[1] "2 2"
[1] "3 1"
[1] "3 2"
Break in for Loop
In R, break
statement is used to exit the loop immediately. It simply jumps out of the loop altogether, and the program continues after the loop.
# Break the loop at 'blue'
colors <- c("red","green","blue","yellow")
for (x in colors) {
if (x == "blue")
break
print(x)
}
[1] "red"
[1] "green"
Next (continue) in for Loop
The next
statement skips the current iteration of a loop and continues with the next iteration.
# Skip 'blue' using continue statement
colors <- c("red","green","blue","yellow")
for (x in colors) {
if (x == "blue")
next
print(x)
}
[1] "red"
[1] "green"
[1] "yellow"