Jak naprawić w r: wymiana ma zerową długość
Błąd, który możesz napotkać w R to:
Error in x[1] = x[0]: replacement has length zero
Ten błąd występuje, gdy próbujesz zastąpić wartość w wektorze inną wartością, która „ma zerową długość”, co oznacza, że nie istnieje.
W tym samouczku dokładnie wyjaśniono, jak naprawić ten błąd.
Jak odtworzyć błąd
Załóżmy, że tworzymy następujący wektor z 10 wartościami w R:
data = c(1, 4, 5, 5, 7, 9, 12, 14, 15, 17)
Załóżmy teraz, że spróbujemy użyć poniższej pętli for() do pomnożenia każdej wartości w wektorze przez wartość przed nią:
for (i in 1: length (data)) {
data[i] = data[i] * data[i-1]
}
Error in data[i] <- data[i] * data[i - 1]: replacement has length zero
Otrzymujemy błąd „ zastąpienie ma długość zerową ”, ponieważ w pierwszej pętli próbujemy wykonać następujące mnożenie:
- dane[1] * dane[0]
Ponieważ indeksy R zaczynają się od 1, wartość data[0] po prostu nie istnieje.
Możemy to sprawdzić próbując wydrukować wartość znajdującą się na pozycji 0 wektora:
print (data[0])
numeric(0)
Rezultatem jest wektor cyfrowy o długości 0 – innymi słowy, nie istnieje.
Jak naprawić błąd
Sposobem naprawienia tego błędu jest po prostu użycie pętli for() , która nie próbuje uzyskać dostępu do wartości wektora, który nie istnieje.
W naszym przykładzie moglibyśmy naprawić ten błąd, uruchamiając pętlę for na pozycji indeksu 2, a nie na pozycji 1:
for (i in 2: length (data)) {
data[i] = data[i] * data[i-1]
}
#view updated vector
data
[1] 1 4 20 100 700 6300 75600
[8] 1058400 15876000 269892000
Zauważ, że nie otrzymujemy błędu, ponieważ nigdy nie próbowaliśmy uzyskać dostępu do pozycji indeksu w wektorze, który nie istnieje.
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak naprawić inne typowe błędy w R:
Jak naprawić: warunek ma długość > 1 i zostanie użyty tylko pierwszy element
Jak naprawić: Zamień ma X linii, dane mają Y
Jak naprawić: nienumeryczny argument operatora binarnego
Jak naprawić: dim(X) musi mieć dodatnią długość
Jak naprawić: błąd podczas wybierania nieużywanych argumentów