Oplossing: het aantal te vervangen items is geen veelvoud van de vervangingslengte


Een fout die je tegen kunt komen in R is:

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

Deze fout treedt op wanneer u probeert een bepaald aantal elementen in een vector- of dataframekolom (stel 3 elementen) te vervangen door een ander aantal elementen (neem 6 elementen).

In deze tutorial wordt precies uitgelegd hoe u deze fout kunt oplossen.

Hoe de fout te reproduceren

Stel dat we het volgende dataframe in R hebben met een paar ontbrekende waarden in de eerste kolom:

 #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

Stel nu dat we proberen de ontbrekende waarden in de eerste kolom te vervangen door de waarden in de tweede kolom:

 #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

We krijgen een foutmelding omdat we hebben geprobeerd 3 ontbrekende waarden in de eerste kolom te vervangen door de 6 waarden in de tweede kolom.

Hoe u de fout kunt oplossen

De eenvoudigste manier om deze fout op te lossen is door simpelweg een ifelse() -instructie te gebruiken:

 #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

Deze ifelse() -instructie controleert of de waarde van kolom “a” leeg is. Als dit het geval is, wordt deze vervangen door de overeenkomstige waarde in kolom „b“, anders wordt deze met rust gelaten.

Een andere manier om deze fout op te lossen is door simpelweg alle ontbrekende waarden te vervangen door een specifiek nummer:

 #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

Met deze methode wordt elke ontbrekende waarde in kolom „a“ vervangen door een nul.

Aanvullende bronnen

Hoe op te lossen in R: NA’s geïntroduceerd door dwang
Hoe te repareren in R: index buiten bereik
Hoe op te lossen in R: de lengte van een langer object is geen veelvoud van de lengte van een korter object

Einen Kommentar hinzufügen

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