R if else elseif Statement

Often, you need to execute some statements only when some condition is met.

You can use following conditional statements in your code to do this.

  • if Statement: use it to execute a block of code, if a specified condition is true
  • else Statement: use it to execute a block of code, if the same condition is false
  • else if Statement: use it to specify a new condition to test, if the first condition is false
  • ifelse() Function: use it when to check the condition for every element of a vector

The if Statement

Use if statement to execute a block of code, if the condition is true.

Syntax

r if statement syntax

Making a simple comparison

Example:

> x <- 7
> y <- 5
> if(x > y) {
+   print("x is greater")
+ }
[1] "x is greater"

Likewise, you can use following comparison operators to compare two values:

R Comparison operators with if statement
OperatorMeaningExample
==Equalsif (x == y)
!=Not equalsif (x != y)
>Greater thanif (x > y)
>=Greater than or equal toif (x >= y)
<Less thanif (x < y)
<=Less than or equal toif (x <= y)

More Examples

In R, any non-zero value is considered TRUE, whereas a zero is considered FALSE. That’s why all the below if statements are valid.

Examples:

> # mathematical expression
> x <- 7
> y <- 5
> if(x + y) {
+   print("True")
+ }
[1] "True"
> # any non-zero value
> if(-3) {
+   print("True")
+ }
[1] "True"

if Statement Without Curly Braces

If you have only one statement to execute, you can skip curly braces.

Example:

> x <- 7
> y <- 5
> if(x > y) print("x is greater")
[1] "x is greater"

Nested if Statement

You can write one if statement inside another if statement to test more than one condition and return different results.

Example:

> x <- 7
> y <- 5
> z <- 2
> if(x > y) {
+   print("x is greater than y")
+   if(x > z) print("x is greater than y and z")
+ }
[1] "x is greater than y"
[1] "x is greater than y and z"

The else Statement

Use else statement to execute a block of code, if the condition is false.

Syntax

r if else statement syntax

condition: is any expression that evaluates to either true or false.

if statement: specifies a block of statements if the condition is true.

else statement: specifies a block of statements if the condition is false.

A Simple if-else comparison

Example:

> x <- 7
> y <- 5
> if(x > y) {
+   print("x is greater")
+ } else {
+   print("y is greater")
+ }
[1] "x is greater"

The else if Statement

Use else if statement to specify a new condition to test, if the first condition is false.

Syntax

r if else if else statement syntax

condition: is any expression that evaluates to either true or false.

if statement: specifies a block of statements if the condition is true.

elif statement: specifies a new condition to test, if the first condition is false.

else statement: specifies a block of statements if the condition is false.

Using else-if Statement

Example:

> x <- 5
> y <- 5
> if(x > y) {
+   print("x is greater")
+ } else if(x < y) {
+   print("y is greater")
+ } else {
+   print("x and y are equal")
+ }
[1] "x and y are equal"

In R, you can use as many else if statements as you want in your program. There’s no limit.

However, it’s not a best practice when you want to make series of decisions. You can use switch() function as an efficient way.

Multiple Conditions

To join two or more conditions into a single if statement, use logical operators viz. && (and), || (or) and ! (not).

&& (and) expression is True, if all the conditions are true.

Example: Test multiple conditions with and operator ‘&&’

> x <- 7
> y <- 5
> z <- 2
> if(x > y && x > z) {
+   print("x is greater")
+ }
[1] "x is greater"

|| (or) expression is True, if at least one of the conditions is True.

Example: Test multiple conditions with or operator ‘||’

> x <- 7
> y <- 5
> z <- 9
> if(x > y || x > z) {
+   print("x is greater than y or z")
+ }
[1] "x is greater than y or z"

! (not) expression is True, if the condition is false.

Example: Test multiple conditions with not operator ‘!’

> x <- 7
> y <- 5
> if(!(x < y)) {
+   print("x is greater")
+ }
[1] "x is greater"

One Line If…Else

If you have only one statement to execute, one for if , and one for else , you can put it all on the same line:

Syntax

r one line if else syntax

Examples

Example:

> x <- 7
> y <- 5
> if (x > y) print("x is greater") else print("y is greater")
[1] "x is greater"

You can also use it to select variable assignment.

Example:

> x <- 7
> y <- 5
> max <- if (x > y) x else y
> max
[1] 7

The ifelse() Function

In R, conditional statements are not vector operations. They deal only with a single value.

If you pass in, for example, a vector, the if statement will only check the very first element and issue a warning.

Example:

> v <- 1:6
> if(v %% 2) {
+   print("odd")
+ } else {
+   print("even")
+ }
[1] "odd"
Warning message:
In if (v%%2) { :
  the condition has length > 1 and only the first element will be used

The solution to this is the ifelse() function.

The ifelse() function checks the condition for every element of a vector and selects elements from the specified vector depending upon the result.

Here’s the syntax for the ifelse() function.

Syntax

r ifelse function syntax

Examples

Example:

> v <- c(1,2,3,4,5,6)
> ifelse(v %% 2 == 0, "even", "odd")
[1] "odd"  "even" "odd"  "even" "odd"  "even"

You can even use this function to choose values from two vectors.

Example:

> v1 <- c(1,2,3,4,5,6)
> v2 <- c("a","b","c","d","e","f")
> ifelse(c(TRUE,FALSE,TRUE,FALSE,TRUE,FALSE), v1, v2)
[1] "1" "b" "3" "d" "5" "f"