If / while (condition) hatası {: eksik DOĞRU / YANLIŞ gereken değer


159

Bu hata iletisini aldım:

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

veya

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

Ne anlama geliyor ve nasıl önleyebilirim?


5
Çifte eşit operatör her NAiki tarafta da tolere edemez . Ben tanımlamak: x = NAve sonra bir yapmak if (x == NA){ ... }sonra ayrıştırıcı çift eşittir sol tarafını incelerken çalışma zamanında bu hata atılır. Bu hatayı gidermek için, koşulunuzdaki her değişkenin NA kullanmadığından emin olun is.na(your_variable).
Eric Leschinski

Yanıtlar:


203

Sonuç conditionolarak bir NA. ifKoşullu olması ya bir gerekir TRUEya da FALSEsonuçlanabilir.

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

Bu, hesaplamaların sonuçları olarak yanlışlıkla olabilir:

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

Bir nesne kullanımını eksik olup olmadığını test etmek için is.na(x)yerine x == NA.


Ayrıca ilgili hatalara bakın:

İf / while (condition) {: argümanının uzunluğu sıfır ise hata

İf / while (koşul) hatası: argüman mantıksal olarak yorumlanamıyor

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

10

Boş veya boş bir dizeyi denetlerken buna rastladım

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

olarak değiştirdi

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

1
Fyi, orada da!(length(x) == 1L && nzchar(x))
Frank
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.