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