Fout in if/while (voorwaarde) {: ontbrekende waarde waar TRUE/FALSE nodig is

Ik heb deze foutmelding ontvangen:

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

of

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

Wat betekent het en hoe voorkom ik het?


Antwoord 1, autoriteit 100%

De evaluatie van conditionresulteerde in een NA. De voorwaarde ifmoet een TRUEof FALSEresultaat hebben.

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

Dit kan per ongeluk gebeuren als de resultaten van berekeningen:

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

Om te testen of een object ontbreekt, gebruikt u is.na(x)in plaats van x == NA.


Zie ook de gerelateerde fouten:

Fout in if/while (voorwaarde) {: argument heeft lengte nul

Fout in if/while (voorwaarde): argument kan niet als logisch worden geïnterpreteerd

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

Antwoord 2, autoriteit 5%

Ik kwam dit tegen bij het controleren van een null of lege string

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

veranderd in

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

Antwoord 3

dit werkt met "NA"niet voor 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])
  }

Other episodes