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ść