Come riparare in r: argomento non numerico dell'operatore binario


Un errore che potresti riscontrare in R è:

 Error in df$var1- df$var2: non-numeric argument to binary operator 

Questo errore si verifica quando si tenta di eseguire un’operazione binaria su due vettori e uno dei vettori non è numerico.

Ecco alcuni esempi di operazioni binarie:

  • Sottrazione ( )
  • Aggiunta ( + )
  • Moltiplicazioni ( * )
  • Divisione ( / )

Questo errore si verifica molto spesso quando uno dei vettori forniti è un vettore di caratteri.

Questo tutorial spiega esattamente come correggere questo errore.

Come riprodurre l’errore

Supponiamo di avere il seguente frame di dati in R:

 #create data frame
df <- data. frame (period = c(1, 2, 3, 4, 5, 6, 7, 8),
                 sales = c(14, 13, 10, 11, 19, 9, 8, 7),
                 returns = c('1', '0', '2', '1', '1', '2', '2', '3'))

#view data frame
df

  period sales returns
1 1 14 1
2 2 13 0
3 3 10 2
4 4 11 1
5 5 19 1
6 6 9 2
7 7 8 2
8 8 7 3

Ora diciamo di provare a creare una nuova colonna chiamata “netto” sottraendo la colonna “resi” dalla colonna “vendite”:

 #attempt to create new column called 'net'
df$net <- df$sales - df$returns

Error in df$sales * df$returns: non-numeric argument to binary operator

Si verifica un errore perché la colonna “resi” appartiene alla classe “caratteri” e non è possibile sottrarre una colonna di caratteri da una colonna numerica.

 #display class of 'sales' column
class(df$sales)

[1] "digital"

#display class of 'returns' column
class(df$returns)

[1] “character”

Come correggere l’errore

Il modo per correggere questo errore è utilizzare as.numeric() per convertire la colonna “restituisce” in numerica prima di eseguire la sottrazione:

 #create new column called 'net'
df$net <- df$sales - as. numeric (df$returns)

#view updated data frame
df

  period sales returns net
1 1 14 1 13
2 2 13 0 13
3 3 10 2 8
4 4 11 1 10
5 5 19 1 18
6 6 9 2 7
7 7 8 2 6
8 8 7 3 4

Siamo in grado di eseguire la sottrazione senza errori perché le colonne “vendite” e “resi” erano numeriche.

Risorse addizionali

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

Come risolvere in R: dim(X) deve avere una lunghezza positiva
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 *