Lösung: die anzahl der zu ersetzenden elemente ist kein vielfaches der ersetzungslänge


Ein Fehler, der in R auftreten kann, ist:

 Warning message:
  number of items to replace is not a multiple of replacement length

Dieser Fehler tritt auf, wenn Sie versuchen, eine bestimmte Anzahl von Elementen in einer Vektor- oder Datenrahmenspalte (angenommen 3 Elemente) durch eine andere Anzahl von Elementen (angenommen 6 Elemente) zu ersetzen.

In diesem Tutorial wird genau erklärt, wie Sie diesen Fehler beheben können.

So reproduzieren Sie den Fehler

Angenommen, wir haben den folgenden Datenrahmen in R mit einigen fehlenden Werten in der ersten Spalte:

 #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

Nehmen wir nun an, wir versuchen, die fehlenden Werte in der ersten Spalte durch die Werte in der zweiten Spalte zu ersetzen:

 #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

Wir erhalten eine Fehlermeldung, weil wir versucht haben, 3 fehlende Werte in der ersten Spalte durch die 6 Werte in der zweiten Spalte zu ersetzen.

So beheben Sie den Fehler

Der einfachste Weg, diesen Fehler zu beheben, besteht darin, einfach eine ifelse() -Anweisung zu verwenden:

 #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

Diese ifelse() -Anweisung prüft, ob der Wert der Spalte „a“ leer ist. Wenn ja, wird er durch den entsprechenden Wert in Spalte „b“ ersetzt, andernfalls bleibt er unverändert.

Eine andere Möglichkeit, diesen Fehler zu beheben, besteht darin, einfach alle fehlenden Werte durch eine bestimmte Zahl zu ersetzen:

 #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

Bei dieser Methode wird jeder fehlende Wert in Spalte „a“ durch eine Null ersetzt.

Zusätzliche Ressourcen

So beheben Sie in R: NAs, die durch Zwang eingeführt wurden
So reparieren Sie in R: Index außerhalb der Grenzen
So beheben Sie das Problem in R: Die Länge eines längeren Objekts ist kein Vielfaches der Länge eines kürzeren Objekts

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert