Lezioni del modulo (2/2)
Condizionali e Cicli
Per implementare algoritmi e procedure complesse in R, è necessario poter controllare quali istruzioni eseguire e quante volte ripeterle.
Istruzioni Condizionali
In R, la struttura condizionale fondamentale si basa su if ed else. La sintassi è del tutto simile a quella di linguaggi come JavaScript o C:
score <- 85
if (score >= 60) {
print("Superato!")
} else {
print("Non superato.")
}
Le parentesi graffe {} delimitano i blocchi di codice da eseguire a seconda del risultato dell'espressione booleana tra parentesi tonde.
Il Ciclo for
Il ciclo for in R viene utilizzato per iterare su elementi appartenenti a una sequenza (come un vettore o una lista).
# Stampa i numeri da 1 a 3
for (i in 1:3) {
print(i)
}
In R, la sintassi 1:3 è un'abbreviazione per creare il vettore c(1, 2, 3).
Possiamo anche scorrere direttamente gli elementi di un vettore esistente:
fruits <- c("apple", "banana", "cherry")
for (fruit in fruits) {
print(fruit)
}
La Funzione ifelse
In R, la funzione ifelse() è una versione vettorializzata del costrutto if-else. Consente di applicare una condizione a un intero vettore in un'unica operazione, restituendo un vettore di risultati.
scores <- c(55, 80, 45, 90)
# Se score >= 60 assegna "Pass", altrimenti "Fail"
results <- ifelse(scores >= 60, "Pass", "Fail")
print(results) # "Fail" "Pass" "Fail" "Pass"
Il Ciclo while
Il ciclo while viene utilizzato per ripetere un blocco di codice fintanto che una determinata condizione rimane vera (TRUE). È fondamentale assicurarsi che la condizione diventi falsa ad un certo punto per evitare cicli infiniti.
counter <- 1
while (counter <= 3) {
print(counter)
counter <- counter + 1
}
Prova tu
Scrivi una struttura condizionale if-else che verifichi se la variabile score è maggiore o uguale a 60. Se lo è, imposta status a 'Pass', altrimenti impostala a 'Fail'.
Mostra suggerimento
Verifica score >= 60 e assegna status <- 'Pass' o status <- 'Fail'
Soluzione disponibile dopo 3 tentativi
Scrivi un ciclo for che iteri sulla sequenza 1:5 e stampi ogni valore usando la funzione print().
Mostra suggerimento
Usa la sintassi: for (i in 1:5) { print(i) }
Soluzione disponibile dopo 3 tentativi
Dato il vettore v, scrivi un ciclo for che iteri su ogni elemento e ne stampi il doppio (val * 2) usando print().
Mostra suggerimento
Scorri gli elementi di v: for (val in v) { print(val * 2) }
Soluzione disponibile dopo 3 tentativi
Dato il vettore scores, usa la funzione ifelse() per verificare quali elementi sono maggiori o uguali a 60. Salva il risultato (che conterrà 'Pass' o 'Fail' per ciascun elemento) nella variabile results.
Mostra suggerimento
Usa la funzione: results <- ifelse(scores >= 60, 'Pass', 'Fail')
Soluzione disponibile dopo 3 tentativi
Usa un ciclo while per raddoppiare il valore di x fino a quando non supera 50. Incrementa anche la variabile counter ad ogni iterazione.
Mostra suggerimento
Usa un ciclo while (x <= 50) e aggiorna sia x che counter dentro le parentesi graffe.
Soluzione disponibile dopo 3 tentativi