Logical Flow in R: If/Else Statements

If statements in R are used to define choice in the script. For example, if there are two choices ‘a’ and ‘b’ and an if statement is used. Then if a certain condition exists ‘a’ happens if not, ‘b’ happens.

Before we explore this more closely we need to setup a scenario and a function for it. Imagine that James wants to donate $40.00 for every point his team scores in a game. To calculate this we create the following function.

CashDonate <- function(points, Dollars_per_point=40){
 game.points<- points * Dollars_per_point
 round(game.points)
}

Here is what we did

  1. We created the function “CashDonate”
  2. The function has the arguments ‘points’ and ‘Dollars_per_point’ which has a default value of 40
  3. The variable ‘game.points’ is created to hold the value of ‘points’ times ‘Dollars_per_point’
  4. The output of ‘game.points’ is then rounded which is the total amount of money that should be donated

The function works perfectly

Below is an example of the function working when James’ team scores 95 points

> CashDonate(95)
[1] 3800

Later, James comes to you upset. His team is scoring so many points that it is starting to affect his budget. He now wants to change the amount he donates IF the team scores over 100 points. If his team scores 100 points or more James wants to donate $30.00 per point instead of $40.00 dollars. Below is the modified function. Notice the use of the if in the script.

CashDonate <- function(points, Dollars_per_point=40){
 game.points<- points * Dollars_per_point  if(points > 100) {game.points <-points * 30
 }
 round(game.points)
}

Most of the code is the same except notice the following changes

  1. We added the argument ‘if’ after this, we put the condition
  2. If the number of points was greater than 100 we now would multiply the results of the variable ‘games.points’ by 30 instead of the default value of 40

Below are two examples. Example 1 shows the results of the modified ‘CashDonate’ function when less than 100 points are scored. Example two will show the results when more than 100 points are scored.

EXAMPLE 1
> CashDonate(98)
[1] 3920
EXAMPLE 2
> CashDonate(103)
[1] 3090

Else Statements

Else statements allow for the use of TRUE/FALSE statements. For example, if ‘a’ is true do this if not do something else. Below is a scenario that requires the use of an ‘else’ statement.

The owner of James’ team decides that he wants to contribute to the donating as well. He states that if it is a home game he will give 50% of whatever James give and he will give 30% of whatever James gives for away games. The total will be added together as one amount. Below is the modified code.

CashDonate <- function(points, Dollars_per_point=40, HomeGame=TRUE){
 game.points<- points * Dollars_per_point  if(points > 100) {game.points <-points * 30}
 if(HomeGame) {Total.Donation <- game.points * 1.5
 } else {Total.Donation <- game.points * 1.3}
 round(Total.Donation)
}

Here is an explanation

  1. At the top, we add the argument “HomeGame” and set the default to “TRUE” which means the other choice is “FALSE” which is for an away game
  2. The rule for points over 100 is the same as before
  3. The second ‘if’ statement talks about the logical statement for “HomeGame”. If it is a home game the results of ‘game.points’ is multiplied by 1.5 or 50%. If it is not a home game (notice the ‘else’) then the results of ‘game.points’ is multiplied by 1.3 or 30%. The results of either choice are stored in the variable ‘Total.Donation’
  4. Lastly, the results of ‘Total.Donation’ are rounded

Below are 4 examples

Example 1 is less than 100 points scored in a home game

> CashDonate(98)
[1] 5880

Example 2 is more than 100 points scored in a home game

> CashDonate(102)
[1] 4590

Example 3 is less than 100 points scored at an away game

> CashDonate(99, HomeGame = FALSE)
[1] 5148

Example 4 is more than 100 points scored at an away game

> CashDonate(104, HomeGame = FALSE)
[1] 4056

Conclusion

If statements provide choice. Else statements provide choice for logical arguments. Both can be used in R to provide several different actions in a script.

Advertisements

3 thoughts on “Logical Flow in R: If/Else Statements

  1. Pingback: Logical Flow in R: If/Else Statements | Educati...

  2. Pingback: Logical Flow in R: If/Else Statements Part II | educationalresearchtechniques

  3. Pingback: Switch Function in R | educationalresearchtechniques

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s