How to Fix in R: argument is of length zero


One error message you may encounter when using R is:

Error in if (x < 10) { : argument is of length zero

This error usually occurs when you attempt to make some logical comparison within an if statement in R, but the variable that you’re using in the comparison is of length zero.

Two examples of variables with length zero are numeric() or character(0).

The following example shows how to resolve this error in practice.

How to Reproduce the Error

Suppose we create the following numeric variable in R with a length of zero:

#create numeric variable with length of zero
x <- numeric()

Now suppose we attempt to use this variable in an if statement:

#if x is less than 10, print x to console
if(x < 10) {
  x
}

Error in if (x < 10) { : argument is of length zero

We receive an error because the variable that we defined has a length of zero.

If we simply created a numeric variable with an actual value, we would never receive this error when using the if statement:

#create numeric variable
y <- 5

#if y is less than 10, print y to console
if(y < 10) {
  y
}

[1] 5

How to Avoid the Error

To avoid the argument is of length zero error, we must include an isTRUE function, which uses the following logic:

is.logical(x) && length(x) == 1 && !is.na(x) && x

If we use this function in the if statement, we won’t receive an error when comparing our variable to some value:

if(isTRUE(x) && x < 10) {
  x
}

Instead of receiving an error, we simply receive no output because the isTRUE(x) function evaluates to FALSE, which means the value of x is never printed.

Additional Resources

The following tutorials explain how to fix other common errors in R:

How to Fix in R: Arguments imply differing number of rows
How to Fix in R: error in select unused arguments
How to Fix in R: replacement has length zero

Leave a Reply

Your email address will not be published.