Rozwiązanie: liczba elementów do wymiany nie jest wielokrotnością długości wymiany
Błąd, który możesz napotkać w R to:
Warning message: number of items to replace is not a multiple of replacement length
Ten błąd występuje, gdy próbujesz zastąpić określoną liczbę elementów w kolumnie wektora lub ramki danych (zakładając 3 elementy) inną liczbą elementów (zakładając 6 elementów).
W tym samouczku dokładnie wyjaśniono, jak naprawić ten błąd.
Jak odtworzyć błąd
Załóżmy, że mamy w R następującą ramkę danych z kilkoma brakującymi wartościami w pierwszej kolumnie:
#create data frame df <- data. frame (a=c(3, NA, 7, NA, NA, 14), b=c(4, 4, 5, 12, 13, 18)) #view data frame df ab 1 3 4 2 NA 4 3 7 5 4 NA 12 5 NA 13 6 14 18
Załóżmy teraz, że próbujemy zastąpić brakujące wartości w pierwszej kolumnie wartościami z drugiej kolumny:
#attempt to replace missing values in first column with values in second column df$a[is. na (df$a)] <- df$b Warning message: In df$a[is.na(df$a)] <- df$b: number of items to replace is not a multiple of replacement length
Otrzymujemy błąd, ponieważ próbowaliśmy zastąpić 3 brakujące wartości w pierwszej kolumnie 6 wartościami z drugiej kolumny.
Jak naprawić błąd
Najłatwiejszym sposobem naprawienia tego błędu jest użycie instrukcji ifelse() :
#replace missing values in column 'a' with corresponding values in column 'b'
df$a <- ifelse(is. na (df$a), df$b, df$a)
#view updated data frame
df
ab
1 3 4
2 4 4
3 7 5
4 12 12
5 13 13
6 14 18
Ta instrukcja ifelse() sprawdza, czy wartość kolumny „a” jest pusta. Jeżeli tak, zastępuje się ją odpowiednią wartością w kolumnie „b”, w przeciwnym razie pozostawia się ją bez zmian.
Innym sposobem naprawienia tego błędu jest po prostu zastąpienie wszystkich brakujących wartości określoną liczbą:
#replace all missing values in column 'a' with zero
df$a[is. na (df$a)] <- 0
#view updated data frame
df
ab
1 3 4
2 0 4
3 7 5
4 0 12
5 0 13
6 14 18
Stosując tę metodę, każda brakująca wartość w kolumnie „a” jest zastępowana zerem.
Dodatkowe zasoby
Jak naprawić w R: NA wprowadzone przez przymus
Jak naprawić w R: indeks poza zakresem
Jak naprawić w R: długość dłuższego obiektu nie jest wielokrotnością długości krótszego obiektu