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

Dodaj komentarz

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