Jak naprawić w r: argument ma zerową długość


Komunikat o błędzie, który możesz napotkać podczas korzystania z R, to:

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

Ten błąd zwykle występuje, gdy próbujesz przeprowadzić porównanie logiczne w instrukcji if w R, ale zmienna używana w porównaniu ma długość zero.

Dwa przykłady zmiennych o zerowej długości to numeric() lub Character(0) .

Poniższy przykład pokazuje, jak w praktyce rozwiązać ten błąd.

Jak odtworzyć błąd

Załóżmy, że tworzymy następującą zmienną numeryczną w R o zerowej długości:

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

Załóżmy teraz, że spróbujemy użyć tej zmiennej w instrukcji if:

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

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

Otrzymujemy błąd, ponieważ zmienna, którą definiujemy, ma zerową długość.

Gdybyśmy po prostu utworzyli zmienną numeryczną o wartości rzeczywistej, nigdy nie otrzymalibyśmy tego błędu przy użyciu instrukcji if:

 #create numeric variable
y <- 5

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

[1] 5

Jak uniknąć błędu

Aby uniknąć błędu zerowej długości argumentu , musimy dołączyć funkcję isTRUE , która wykorzystuje następującą logikę:

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

Jeśli zastosujemy tę funkcję w instrukcji if, nie otrzymamy błędu przy porównaniu naszej zmiennej z wartością:

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

Zamiast otrzymać błąd, po prostu nie otrzymujemy żadnego wyniku, ponieważ funkcja isTRUE(x) ma wartość FALSE , co oznacza, że wartość x nigdy nie jest drukowana.

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak naprawić inne typowe błędy w R:

Jak naprawić w R: argumenty obejmują różną liczbę linii
Jak naprawić w R: błąd w wyborze nieużywanych argumentów
Jak naprawić w R: wymiana ma zerową długość

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *