Error in if/while (condition) {: missing Value where TRUE/FALSE needed

RR Faq

R Problem Overview


I received this error message:

Error in if (condition) { : missing value where TRUE/FALSE needed

or

Error in while (condition) { : missing value where TRUE/FALSE needed

What does it mean, and how do I prevent it?

R Solutions


Solution 1 - R

The evaluation of condition resulted in an NA. The if conditional must have either a TRUE or FALSE result.

if (NA) {}
## Error in if (NA) { : missing value where TRUE/FALSE needed

This can happen accidentally as the results of calculations:

if(TRUE && sqrt(-1)) {}
## Error in if (TRUE && sqrt(-1)) { : missing value where TRUE/FALSE needed

To test whether an object is missing use is.na(x) rather than x == NA.


See also the related errors:

https://stackoverflow.com/q/12307139/134830

https://stackoverflow.com/q/27659841/134830

if (NULL) {}
## Error in if (NULL) { : argument is of length zero

if ("not logical") {}
## Error: argument is not interpretable as logical

if (c(TRUE, FALSE)) {}
## Warning message:
## the condition has length > 1 and only the first element will be used

Solution 2 - R

I ran into this when checking on a null or empty string

if (x == NULL || x == '') {

changed it to

if (is.null(x) || x == '') {

Solution 3 - R

this works with "NA" not for NA

comments = c("no","yes","NA")
  for (l in 1:length(comments)) {
    #if (!is.na(comments[l])) print(comments[l])
    if (comments[l] != "NA") print(comments[l])
  }

Solution 4 - R

I was getting this same error in my forloops with complex if statements. I fixed this issue by just wrapping my condition with isTRUE.

if(isTRUE(condition)==TRUE) {do something}

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionConcerned_CitizenView Question on Stackoverflow
Solution 1 - RBrian DiggsView Answer on Stackoverflow
Solution 2 - RpbateyView Answer on Stackoverflow
Solution 3 - RSeyma KalayView Answer on Stackoverflow
Solution 4 - RKrutikView Answer on Stackoverflow