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