2.4 Loops and conditions
This section reviews two of the most basic elements of any programming language: if
statements and cycles
or loops
.
2.4.1 if
statements
The basic form of an if
statement in R is as follows:
if(condition){true_action}
Condition must return a Boolean, either TRUE
or FALSE
. If TRUE
then the code follows the code within the curly brackets and performs the true_action
. If condition
is FALSE
the code does nothing.
It is more customary to also give a chunk of code for the case condition
is FALSE
. This can be achieved with else
.
if(condition){true_action} else {false_action}
Let’s see an example.
<- 5
a if (a < 2){"hello"} else {"goodbye"}
## [1] "goodbye"
The variable a
is assigned the number 5. Then we impose a condition: if a
is less than 2, we print the text "hello"
, otherwise "goodbye"
is printed. Since a <- 5
the code prints correctly "goodbye"
. On the other hand if a
were assigned 1
.
<- 1
a if (a < 2){"hello"} else {"goodbye"}
## [1] "hello"
2.4.2 ifelse
if
works when checking a single element and the condition returns either TRUE
or FALSE
. The command ifelse
can be used to quickly check a condition over all elements of a vector. Consider the following example.
<- c(1, 3, 5, 7, 9)
vec ifelse(vec > 5, "bigger", "smaller")
## [1] "smaller" "smaller" "smaller" "bigger" "bigger"
vec
contains the values 1, 3, 5, 7, 9 and the condition
is if an elemenent of vec
is larger than 5. If TRUE
the code returns the string bigger
and otherwise returns smaller
. The code above returns therefore a vector of the same length of vec
including either the string bigger
or the string smaller
.
2.4.3 Loops
for
loops are used to iterate over items in a vector. They have the following skeleton:
for(item in vector) {perform_action}
For each item
in vector
, perform_action
is performed once and the value of item
is updated each time.
Here is an example.
for (i in c(1,2,3)){
print(i)
}
## [1] 1
## [1] 2
## [1] 3
Item is the variable i
(it is costumary to use just a letter) and at each step i
is set equal to a value in the vector c(1,2,3)
. At each of these iterations, the command print(i)
, which simply returns the value that i
takes is called. Indeed we see that the output is the sequence of numbers 1, 2, 3.