Vai al contenuto
eLearner.app
Modulo 2 · Lezione 2 di 24/10 nel corso~12 min
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:

Code
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).

Code
# 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:

Code
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.

Code
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.

Code
counter <- 1
while (counter <= 3) {
  print(counter)
  counter <- counter + 1
}

Prova tu

Esercizio#r.m2.l2.e1
Tentativi: 0Caricamento…

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'.

Caricamento editor…
Mostra suggerimento

Verifica score >= 60 e assegna status <- 'Pass' o status <- 'Fail'

Soluzione disponibile dopo 3 tentativi

Esercizio#r.m2.l2.e2
Tentativi: 0Caricamento…

Scrivi un ciclo for che iteri sulla sequenza 1:5 e stampi ogni valore usando la funzione print().

Caricamento editor…
Mostra suggerimento

Usa la sintassi: for (i in 1:5) { print(i) }

Soluzione disponibile dopo 3 tentativi

Esercizio#r.m2.l2.e3
Tentativi: 0Caricamento…

Dato il vettore v, scrivi un ciclo for che iteri su ogni elemento e ne stampi il doppio (val * 2) usando print().

Caricamento editor…
Mostra suggerimento

Scorri gli elementi di v: for (val in v) { print(val * 2) }

Soluzione disponibile dopo 3 tentativi

Esercizio#r.m2.l2.e4
Tentativi: 0Caricamento…

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.

Caricamento editor…
Mostra suggerimento

Usa la funzione: results <- ifelse(scores >= 60, 'Pass', 'Fail')

Soluzione disponibile dopo 3 tentativi

Esercizio#r.m2.l2.e5
Tentativi: 0Caricamento…

Usa un ciclo while per raddoppiare il valore di x fino a quando non supera 50. Incrementa anche la variabile counter ad ogni iterazione.

Caricamento editor…
Mostra suggerimento

Usa un ciclo while (x <= 50) e aggiorna sia x che counter dentro le parentesi graffe.

Soluzione disponibile dopo 3 tentativi