This error occurs if you try to use an if statement to evaluate a condition in an object with multiple elements, like a vector. The if() function can only check one element to evaluate a condition.

You can solve this error by using the ifelse() function, which performs an element-wise evaluation of a vector.

This tutorial will go through how to stop this warning from occurring.

Table of contents


Consider an example of a numeric vector.

vec <- c(4, 1, 0, 8, -1, 4, 2)

We want to use an if statement to square each value in the vector is greater than zero. Let’s create the function to evaluate the vector:

f <- function(x){
  if (x>0){
  } else {

Let’s call the function and pass the numeric vector as an argument:

Error in if (x > 0) { : the condition has length > 1

The error occurs because the vector has a length greater than one. The if() function can only check one element at a time.


We can use the ifelse() function, which is the vectorized alternative to the standard if…else statement. The syntax of the ifelse() function is:

ifelse(test_expression, x, y)

The output vector has the element x if the test_expression evaluates to TRUE for the corresponding input vector element. If the test_expression evaluates to FALSE, then the element in the output vector is y. Let’s look at the revised code:

vec <- c(4, 1, 0, 8, -1, 4, 2)
f <- function(x){
  ifelse(x>0, x**2, x)

Let’s run the code to see the result:

[1] 16  1  0 64 -1 16  4

We successfully evaluated the input vector and squared the values in the vector that were greater than 0.


Congratulations on reading to the end of this tutorial!

For further reading on R related errors, go to the articles: 

Go to the online courses page on R to learn more about coding in R for data science and machine learning.

Have fun and happy researching!