Come risolvere il problema: il numero di articoli da sostituire non è multiplo della lunghezza di sostituzione


Un errore che potresti riscontrare in R è:

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

Questo errore si verifica quando si tenta di sostituire un certo numero di elementi in una colonna di vettore o frame di dati (assume 3 elementi) con un numero diverso di elementi (assume 6 elementi).

Questo tutorial spiega esattamente come correggere questo errore.

Come riprodurre l’errore

Supponiamo di avere il seguente frame di dati in R con alcuni valori mancanti nella prima colonna:

 #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

Supponiamo ora di provare a sostituire i valori mancanti nella prima colonna con i valori nella seconda colonna:

 #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

Riceviamo un errore perché abbiamo provato a sostituire 3 valori mancanti nella prima colonna con i 6 valori nella seconda colonna.

Come correggere l’errore

Il modo più semplice per correggere questo errore è utilizzare semplicemente un’istruzione 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

Questa istruzione ifelse() controlla se il valore della colonna “a” è vuoto. In tal caso viene sostituito dal valore corrispondente nella colonna “b”, altrimenti viene lasciato invariato.

Un altro modo per correggere questo errore è semplicemente sostituire tutti i valori mancanti con un numero specifico:

 #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

Utilizzando questo metodo, ogni valore mancante nella colonna “a” viene sostituito con uno zero.

Risorse addizionali

Come risolvere in R: NA introdotte dalla coercizione
Come riparare in R: indice fuori limite
Come risolvere in R: la lunghezza di un oggetto più lungo non è un multiplo della lunghezza di un oggetto più corto

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *