Vai al contenuto principale

Funzione IF ELSE in R

Scopri nel dettaglio la funzione ifelse(), inclusa la sintassi, come verificare se un numero è pari o dispari e, infine, un esempio per vedere se uno studente ha superato o fallito l'esame.
· 4 min leggi

Scopri con l'IA

banner

La funzione "ifelse()" è l'alternativa e la forma abbreviata dell'istruzione if-else in R. Inoltre, utilizza la tecnica "vettorializzata", che rende l'operazione più veloce. Tutti i valori del vettore vengono passati come argomento in una volta sola, invece di passare più volte singoli valori come argomento.

Sintassi

La sintassi della funzione "ifelse()" in R è la seguente:
ifelse(logical_expression, a , b)

Gli argomenti di "ifelse" indicano che:
1. logical_expression: Indica un vettore di input, che a sua volta restituirà in output un vettore della stessa dimensione.
2. a: Viene eseguito quando logical_expression è TRUE.
3. b: Viene eseguito quando logical_expression è FALSE.

Esempio (Dispari o Pari)

Vediamo rapidamente un esempio in cui il seguente codice verifica se i numeri sono dispari o pari. "v" è il vettore che contiene un elenco di numeri. Nella funzione "ifelse" l'espressione "v%%2==1" controlla che il resto di ciascun numero in "v" sia uno e, se risulta TRUE, stampa "odd" altrimenti, se è FALSE, stampa "even".

v = c(14,7,6,9,2)
ifelse(v %% 2 == 1,"odd","even")
  1. 'even'
  2. 'odd'
  3. 'even'
  4. 'odd'
  5. 'even'

Il codice sopra fornisce il seguente output:
'even' 'odd' 'even' 'odd' 'even'
Il funzionamento interno del codice produce un vettore logico c(FALSE,TRUE,FALSE,TRUE,FALSE). Il primo parametro formerà un vettore di stringhe c("odd","odd","odd","odd","odd"); anche il secondo parametro, a sua volta, produrrà un vettore di stringhe c("even","even","even","even","even"). Infine, quando i singoli elementi del vettore sono TRUE vengono cambiati in 'odd', mentre i 'FALSE' diventano 'even'.

Esempio (Promosso o Bocciato)

L'esempio seguente mostra l'uso della funzione "ifelse()" insieme a un DataFrame. Se uno studente ottiene un punteggio superiore a 40, allora viene considerato "Pass" (promosso), altrimenti viene considerato "Fail" (bocciato) a un esame.

Creiamo rapidamente un Data Frame in cui c'è una colonna con il nome dello studente, "Student", con come input un vettore contenente ("Ron", "Jake", "Ava", "Sophia", "Mia"). Un'altra colonna è "Marks", che contiene come input un vettore con i valori (35,75,45,30,85). Infine, entrambe le colonne vengono combinate per formare un data frame e salvate in 'x'.

x <- data.frame("Student" = c("Ron","Jake","Ava","Sophia","Mia"),"Marks" = c(35,75,45,30,85))
str(x)
'data.frame':    5 obs. of  2 variables:
 $ Student: Factor w/ 5 levels "Ava","Jake","Mia",..: 4 2 1 5 3
 $ Marks  : num  35 75 45 30 85
'data.frame':    5 obs. of  2 variables:
 $ Student: Factor w/ 5 levels "Ava","Jake","Mia",..: 4 2 1 5 3
 $ Marks  : num  35 75 45 30 85

Il codice sopra mostra la struttura di un Data Frame usando "str(x)", che indica che ci sono 5 osservazioni con 2 variabili e riporta i rispettivi valori di Student e Marks.

x$Result = ifelse(x$"Marks">40,"Pass","Fail")
print(x)

Il codice sopra restituisce il seguente output:

    Student Marks Result
1    Ron    35   Fail
2   Jake    75   Pass
3    Ava    45   Pass
4 Sophia    30   Fail
5    Mia    85   Pass 

Nel codice sopra, 'x$Result' come variabile viene usato per aggiungere una nuova colonna "Result" a un Data Frame. La funzione "ifelse()" ha come espressione 'x$"Marks">40', che controlla i valori del vettore dalla colonna Marks e determina che "Result" sia "Pass" quando Marks è maggiore di 40, altrimenti "Result" è "Fail".

Congratulazioni

Congratulazioni, sei arrivato alla fine di questo tutorial!

Hai imparato la funzione ifelse() di R con la sua sintassi, come aiuta a capire se un numero è dispari o pari e, infine, con un esempio per vedere se uno studente è promosso o bocciato a un esame.

Se vuoi saperne di più su R, puoi trovare tutte le nostre risorse su R qui.

Dai un'occhiata al nostro tutorial Uso delle funzioni in R.

Argomenti

Correlato