Jak naprawić w r: warunek ma długość > 1 i zostanie użyty tylko pierwszy element
Błąd, który możesz napotkać w R to:
Warning message: In if (x > 1) {: the condition has length > 1 and only the first element will be used
Ten błąd występuje, gdy próbujesz użyć funkcji if() do sprawdzenia warunku, ale do funkcji if() przekazujesz wektor zamiast poszczególnych elementów.
W tym samouczku dokładnie wyjaśniono, jak naprawić ten błąd.
Jak odtworzyć błąd
Załóżmy, że w R mamy następujący wektor:
#define data
x <- c(2, 3, 1, 1, 5, 7)
Załóżmy teraz, że spróbujemy użyć funkcji if() , aby sprawdzić, czy każda wartość wektora x jest większa niż 1, a następnie pomnożymy te wartości przez 2:
#if value in vector x is greater than 1, multiply it by 2
if (x>1) {
x*2
}
Warning message:
In if (x > 1) {:
the condition has length > 1 and only the first element will be used
Otrzymujemy komunikat ostrzegawczy, ponieważ przekazaliśmy wektor do instrukcji if() .
Instrukcja if() może sprawdzić tylko jeden element wektora na raz, ale używając tego kodu próbowaliśmy sprawdzić każdy element wektora na raz.
Jak naprawić błąd
Najłatwiejszym sposobem naprawienia tego błędu jest użycie zamiast tego funkcji ifelse() :
#if value in vector x is greater than 1, multiply it by 2
ifelse(x>1, x*2, x)
[1] 4 6 1 1 10 14
Domyślnie funkcja ifelse() sprawdza każdy element wektora jeden po drugim. Dzięki temu możemy uniknąć błędu, na który natknęliśmy się wcześniej.
Oto jak funkcja ifelse() generuje wygenerowane przez siebie wartości wyjściowe:
- Pierwszy element (2) był większy niż 1, więc pomnożyliśmy go przez 2, aby otrzymać 2*2 = 4
- Drugi element (3) był większy niż 1, więc pomnożyliśmy go przez 2, aby otrzymać 3*2 = 6
- Trzeci element (1) nie był większy niż 1, więc zostawiliśmy go bez zmian: 1
- Czwarty element (1) nie był większy niż 1, więc zostawiliśmy go bez zmian: 1
I tak dalej.
Powiązane: Jak napisać zagnieżdżoną pętlę For w R
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak rozwiązać inne typowe błędy w języku R:
Jak naprawić w R: NA wprowadzone przez przymus
Jak naprawić w R: dim(X) musi mieć długość dodatnią
Jak naprawić w R: Nazwy nie pasują do poprzednich nazw
Jak naprawić w R: długość dłuższego obiektu nie jest wielokrotnością długości krótszego obiektu
Jak naprawić w R: kontrasty można zastosować tylko do czynników o 2 lub więcej poziomach