# if / else statements in R

Often in our code, decisions will have to be made. If/else statements handle this. The idea is very simple; if a test condition has been met, “do one thing”, else “do the other”. It “looks like” this:

The `R`

code structure is also very simple. In `R`

, if/else statements are written like this:

```
if( logical condition ){
perform these instructions
}else{
perform these alternate instructions
}
```

Notice that the instructions are held within curly brackets, `{ }`

just like the instructions for defining a function.

Here are some examples of common “conditions” and how they are written:

condition | description |
---|---|

`( x == a )` |
`==` exactly equal to \(a\) (note the double equals) |

`( x <= a )` |
`<=` less than or equal to \(a\) |

`( x >= a )` |
`>=` greater than or equal to \(a\) |

`( x != a )` |
`!=` not equal to \(a\) |

`((x < a ) | ( x > b ))` |
`|` or |

`((x > a ) & ( x < b ))` |
`&` and |

#### example 1

Here’s a simple if/else statement to respond to the sign of a number:

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

`## [1] "x is negative"`

#### example 2

Let’s now improve our quadratic solver.

```
solve.quadratic <- function(a, b, c) {
D <- b ^ 2 - 4 * a * c
if (D >= 0) {
x1 <- (-b - sqrt(D)) / (2 * a)
x2 <- (-b + sqrt(D)) / (2 * a)
v <- c(x1, x2)
return(v)
}else{
print("no real roots")
}
}
solve.quadratic(1,1,1)
```

`## [1] "no real roots"`

`solve.quadratic(1,1,-6)`

`## [1] -3 2`

Now, the code will only calculate the roots if they are real.

#### example 3

In a simple dice game, you roll two dice. You win if the sum of the throws equals \(6\). Write a function which simulates this game and lets you know if the game resulted in a win or a loss.

We will use the function `sample()`

which can be used to pick an element at random from a vector.

```
dice.game <- function(){
D <- 1:6
#the following code randomly picks 1 number from D = {1,2,3,4,5,6}
throw.1 <- sample(D, 1)
throw.2 <- sample(D, 1)
result <- throw.1 + throw.2
if( result == 6 ) {
print(c(throw.1, throw.2, "you win!"))
}else{
print(c(throw.1, throw.2, "you lose!"))
}
}
dice.game()
```

`## [1] "1" "3" "you lose!"`

`dice.game()`

`## [1] "2" "6" "you lose!"`

`dice.game()`

`## [1] "2" "2" "you lose!"`

`dice.game()`

`## [1] "5" "1" "you win!"`