Hoe te repareren in r: niet-numeriek argument van binaire operator


Een fout die je tegen kunt komen in R is:

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

Deze fout treedt op wanneer u probeert een binaire bewerking uit te voeren op twee vectoren en een van de vectoren is niet numeriek.

Hier zijn voorbeelden van binaire bewerkingen:

  • Aftrekken ( )
  • Toevoeging ( + )
  • Vermenigvuldigingen ( * )
  • Divisie ( / )

Deze fout treedt meestal op als een van de vectoren die u opgeeft een tekenvector is.

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:

 #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

Laten we nu zeggen dat we proberen een nieuwe kolom met de naam ’netto‘ te maken door de kolom ‚retouren‘ af te trekken van de kolom ‚verkoop‘:

 #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

Er treedt een fout op omdat de kolom ‚returns‘ van de klasse ‚character‘ is en het niet mogelijk is een tekenkolom af te trekken van een numerieke kolom.

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

[1] "digital"

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

[1] “character”

Hoe u de fout kunt oplossen

De manier om deze fout op te lossen is door as.numeric() te gebruiken om de kolom „returns“ naar numeriek te converteren voordat u de aftrekking uitvoert:

 #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

We kunnen de aftrekking foutloos uitvoeren omdat de kolommen ‚verkoop‘ en ‚retouren‘ numeriek waren.

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende fouten in R kunt oplossen:

Hoe op te lossen in R: dim(X) moet een positieve lengte hebben
Oplossing in R: namen komen niet overeen met eerdere namen
Hoe op te lossen in R: de lengte van een langer object is geen veelvoud van de lengte van een korter object
Hoe op te lossen in R: contrasten kunnen alleen worden toegepast op factoren met 2 of meer niveaus

Einen Kommentar hinzufügen

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