Corso

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")
- 'even'
- 'odd'
- 'even'
- 'odd'
- '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.

