Come risolvere in r: manca l'argomento "no", senza impostazione predefinita


Un errore che potresti riscontrare in R è:

 Error in ifelse(df$team == "B", "Boston"): 
  argument "no" is missing, with no default

Questo errore si verifica quando si utilizza la funzione ifelse() in R ma si dimentica di includere un terzo argomento per specificare il valore che deve essere restituito se il test logico restituisce false.

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 (team=c('B', 'B', 'B', 'B', 'C', 'C', 'C', 'D'),
                 points=c(12, 22, 35, 34, 20, 28, 30, 18),
                 assists=c(4, 10, 11, 12, 12, 8, 6, 10))

#view data frame
df

  team points assists
1 B 12 4
2 B 22 10
3 B 35 11
4 B 34 12
5 C 20 12
6 C 28 8
7 C 30 6
8 D 18 10

Supponiamo ora di provare a utilizzare la funzione ifelse() per creare una nuova colonna chiamata città che contiene “Boston” se il valore nella colonna squadra è uguale a “B”:

 #attempt to create new column with team city
df$city <- ifelse(df$team == ' B ', ' Boston ')

Error in ifelse(df$team == "B", "Boston"): 
  argument "no" is missing, with no default

Stiamo ricevendo un errore perché non siamo riusciti a fornire un terzo argomento alla funzione ifelse() che specifica il valore che dovremmo restituire se il valore nella colonna del team non è uguale a ‘B’.

Come correggere l’errore

Il modo per correggere questo errore è semplicemente fornire un terzo argomento alla funzione ifelse() che specifica il valore che dovremmo restituire se il valore nella colonna del team non è uguale a “B”.

La seguente sintassi mostra come eseguire questa operazione:

 #create new column with team city
df$city <- ifelse(df$team == ' B ', ' Boston ', ' Other ')

#view updated data frame
df

  team points assists city
1 B 12 4 Boston
2 B 22 10 Boston
3 B 35 11 Boston
4 B 34 12 Boston
5 C 20 12 Other
6 C 28 8 Other
7 C 30 6 Other
8 D 18 10 Other

Tieni presente che questa volta non riceviamo alcun errore poiché abbiamo fornito un terzo argomento alla funzione ifelse() .

In questo esempio, la funzione ifelse() restituisce il valore “Boston” se il valore nella colonna della squadra è uguale a “B” o il valore “Altro” se il valore nella colonna della squadra è qualcos’altro.

Risorse addizionali

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

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
Come riparare in R: il numero di elementi da sostituire non è multiplo della lunghezza di sostituzione

Aggiungi un commento

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