Come risolvere in r: na introdotte dalla coercizione


Un messaggio di avviso comune che potresti incontrare in R è:

 Warning message:
NAs introduced by coercion 

Questo messaggio di avviso viene visualizzato quando si utilizza as.numeric() per convertire un vettore in R in un vettore numerico e nel vettore originale sono presenti valori non numerici.

Per essere chiari, non è necessario fare nulla per “correggere” questo messaggio di avviso. R ti avverte semplicemente che alcuni valori nel vettore originale sono stati convertiti in NA perché non potevano essere convertiti in valori numerici.

Tuttavia, questo tutorial condivide i passaggi esatti che puoi seguire se non vuoi che questo messaggio di avviso venga visualizzato.

Come riprodurre il messaggio di avviso

Il codice seguente converte un vettore di caratteri in un vettore numerico:

 #define character vector
x <- c('1', '2', '3', NA, '4', 'Hey')

#convert to numeric vector
x_num <- as. numeric (x)

#display digital vector
x_num

Warning message:
NAs introduced by coercion 
[1] 1 2 3 NA 4 NA

R converte il vettore di caratteri in un vettore numerico, ma visualizza il messaggio di avviso NA introdotto dalla coercizione poiché due valori del vettore originale non possono essere convertiti in valori numerici.

Metodo n. 1: rimuovere gli avvisi

Un modo per gestire questo messaggio di avviso è semplicemente sopprimerlo utilizzando la funzione sopprimiWarnings() quando si converte il vettore di caratteri in un vettore numerico:

 #define character vector
x <- c('1', '2', '3', NA, '4', 'Hey')

#convert to numeric vector, suppressing warnings
suppressWarnings(x_num <- as.numeric (x))

#display digital vector
x_num

[1] 1 2 3 NA 4 NA

R converte correttamente il vettore di caratteri in vettore numerico senza visualizzare alcun messaggio di avviso.

Metodo n. 2: sostituire valori non numerici

Un modo per evitare innanzitutto il messaggio di avviso è sostituire i valori non numerici del vettore originale con spazi utilizzando la funzione gsub() :

 #define character vector
x <- c('1', '2', '3', '4', 'Hey')

#replace non-numeric values with 0
x <- gsub(" Hey ", " 0 ", x)

#convert to numeric vector
x_num <- as. numeric (x)

#display digital vector
x_num

[1] 1 2 3 4 0

R converte correttamente il vettore di caratteri in vettore numerico senza visualizzare alcun messaggio di avviso.

Risorse addizionali

I seguenti tutorial spiegano come risolvere altri errori comuni in R:

Come risolvere il problema in R: i nomi non corrispondono ai nomi precedenti
Come risolvere in R: la lunghezza di un oggetto più lungo non è un multiplo della lunghezza di un oggetto più corto
Come risolvere in R: i contrasti possono essere applicati solo a fattori con 2 o più livelli

Aggiungi un commento

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