Control Structures

This will help us to control the flow of the R program. It is very much similar to other type of programming language’s Control Structure. Lets look into some common ones,

  • If-else
  • For loops
  • Nested for loops
  • While Loops
  • Repeat Loops and break
  • Next

If-else

> num <- 10
> if(num <= 0){ ## Condition 
+   ## do something
+   print("'num' is less than 0")
+ }else{
+   ## do something else
+   print("'num' is greater than 0")
+ }
[1] "'num' is greater than 0"
> ## Condition with ifelse (Compact way)
> ifelse(num <= 0,"'num' is less than 0","'num' is greater than 0")
[1] "'num' is greater than 0"

For loops

A for loop will help to iterate through iterable objects.

> for(i in 1:3){
+   print(i)
+ }
[1] 1
[1] 2
[1] 3
> veh <- c("car", "van", "bus") ## Create a vector with vehicles
> 
> ## Iterate without index value
> for(i in veh){
+   print(i)
+ }
[1] "car"
[1] "van"
[1] "bus"
> 
> ## Iterate through the vector object based on the interger vector
> for(i in 1:3){
+   print(veh[i])
+ }
[1] "car"
[1] "van"
[1] "bus"
> 
> ## Generate a sequence based on length of 'veh' object
> for(i in seq(veh)){
+   print(veh[i])
+ }
[1] "car"
[1] "van"
[1] "bus"
> 
> ## Curly brakets are not a must
> for(i in veh) print(i)
[1] "car"
[1] "van"
[1] "bus"

Nested Loop

> ## Create a matrix
> my_mat <- matrix(1:6, 2, 3) 
> 
> ## Iterate the matrix using nested loops
> for(r in seq_len(nrow(my_mat))){
+   for(c in seq_len(ncol(my_mat))){
+     print(my_mat[r, c])
+   }
+ }
[1] 1
[1] 3
[1] 5
[1] 2
[1] 4
[1] 6

While Loop

> c <- 0 ## Count 
> while(c < 3){
+   print(c) ## Iterate until it reach c=2
+   c <- c + 1
+ }
[1] 0
[1] 1
[1] 2

Repeat Loops and break

The repeat loop initiates an infinite loop. Like in other programming language if we want to stop the loop we should use break.

> c <- 1 ## Count
> repeat{
+   if(c == 3){
+     print("'c' reached to 3")
+     break ## break the infinite loop
+   }
+   print(c)
+   c <- c + 1 ## Increment
+ }
[1] 1
[1] 2
[1] "'c' reached to 3"

Next

next is used to skip an iteration of a loop.

> for(c in 1:10){
+   if(c <= 5){
+     next ## Skip the first 5 indices
+   }
+   print(c) ## Do something here
+ }
[1] 6
[1] 7
[1] 8
[1] 9
[1] 10

Blog Series