Come pressoché qualsiasi altro lin­guag­gio di pro­gram­ma­zio­ne, anche R, fun­zio­na­le e orientato agli oggetti, supporta la struttura di controllo del ciclo for. Con un ciclo for in R potete iterare su un’enu­me­ra­zio­ne o anche rea­liz­za­re cicli di conteggio.

Pos­si­bi­li­tà di impiego

Sia chi sta imparando a pro­gram­ma­re sia chi sviluppa programmi da tempo ha si­cu­ra­men­te già in­con­tra­to un ciclo for.

Come in altri linguaggi, anche nella pro­gram­ma­zio­ne in R il ciclo for è sempre uti­liz­za­to quando si conosce in anticipo il numero di ese­cu­zio­ni del ciclo e si desidera eseguire ri­pe­tu­ta­men­te de­ter­mi­na­ti blocchi di codice. Un ciclo for è quindi lo strumento preferito ad esempio per im­ple­men­ta­re in un programma un contatore che conta fino al numero cinque.

Molti linguaggi di pro­gram­ma­zio­ne (come Java) sup­por­ta­no inoltre i cicli foreach, con cui potete iterare di­ret­ta­men­te su una matrice o una lista e accedere a ciascun elemento della struttura di dati. Una fun­zio­na­li­tà par­ti­co­lar­men­te pratica se si vuole eseguire un’ope­ra­zio­ne per tutti gli elementi di una struttura di dati. Anche in R è sup­por­ta­ta questa variante del ciclo for. Il ciclo foreach è in­tro­dot­to dalla parola chiave “for” anche in R.

Ma, in sostanza, ciascun ciclo for in R può anche essere so­sti­tui­to da un ciclo while. Oltre alla maggiore leg­gi­bi­li­tà, il vantaggio chiave dei cicli for è la com­pat­tez­za del codice impiegato.

Consiglio

Con lo spazio web di IONOS potete mettere online tutti i vostri progetti co­mo­da­men­te. Inoltre, grazie ai backup regolari, lo spazio di ar­chi­via­zio­ne web sicuro protegge i vostri programmi al meglio dalle perdite di dati.

La sintassi del ciclo for in R

Se volete uti­liz­za­re un ciclo for in R dovete tenere conto delle par­ti­co­la­ri­tà sin­tat­ti­che della sua struttura.

Un ciclo for è co­sti­tui­to so­stan­zial­men­te da due elementi es­sen­zia­li: un’in­te­sta­zio­ne e un corpo. Poiché i cicli for in R sono con­trol­la­ti dall’in­te­sta­zio­ne, viene eseguita questa per prima. Soltanto se la con­di­zio­ne spe­ci­fi­ca­ta è sod­di­sfat­ta può essere eseguito il codice formulato nel corpo.

L’in­te­sta­zio­ne è in­tro­dot­ta dalla parola chiave “for”. Si inserisce quindi il nome della variabile di conteggio fra parentesi tonde, seguita dalla parola chiave “in”. Dopodiché si indica su cosa si desidera iterare. Può trattarsi ad esempio di un in­ter­val­lo di numeri, ma anche di una lista o di un vettore. Il corpo del ciclo che segue è racchiuso fra parentesi graffe.

I diversi cicli for in R

Cicli di conteggio

Come i cicli for in Python, anche i cicli for in R lavorano prin­ci­pal­men­te con un in­ter­val­lo di numeri. Se volete re­sti­tui­re sullo schermo tutti i numeri tra 1 e 10, dovete creare un ciclo for come segue:

for (x in 1:10) {
	print(x)
}
R

Nell’esempio di codice sopra vediamo che nell’in­te­sta­zio­ne del ciclo for in R è in­tro­dot­ta una variabile x. La parola chiave “in” specifica che questa variabile deve muoversi in un in­ter­val­lo di valori compreso tra 1 e 10. L’in­cre­men­to a passi di numeri interi è eseguito au­to­ma­ti­ca­men­te in R. Tenete presente che il numero indicato nella seconda posizione è incluso, a dif­fe­ren­za della funzione range di Python.

Con il vostro ciclo di conteggio potete anche contare verso il basso a partire da un numero. Basta scambiare i due limiti nell’in­te­sta­zio­ne, indicando per primo il numero più grande. Anche in questo caso il de­cre­men­to è eseguito au­to­ma­ti­ca­men­te in R:

for (x in 10:1) {
	print(x)
}
R

Il vostro programma re­sti­tui­rà sullo schermo tutti i numeri interi che iniziano con 10 e terminano con 1.

Cicli foreach

Potete servirvi della logica dei cicli foreach anche se in R non è integrata una parola chiave propria. Anche questi cicli sono in­tro­dot­ti da “for”.

cars <- list("limousine", "cabrio", "suv")
for (x in cars) {
	print (x)
}
R

Qui vi­sua­liz­za­te una lista de­no­mi­na­ta cars in cui sono stati salvati i diversi tipi di auto. Il suc­ces­si­vo ciclo for itera su ciascun elemento di questa lista, re­sti­tuen­do­lo sullo schermo. Dovete indicare il nome dell’elemento sul quale volete iterare (nel nostro caso, cars) dopo la parola chiave “in”.

In­ter­ru­zio­ne di un ciclo for in R: la parola chiave “break”

Se ad esempio de­si­de­ra­te cercare un elemento specifico in una lista, può essere utile in­ter­rom­pe­re il ciclo for già nel momento in cui lo trovate. Così, in molti casi vi ri­spar­mia­te ese­cu­zio­ni inutili del ciclo, riducendo la potenza di calcolo ne­ces­sa­ria per il programma. A questo scopo R contiene la parola chiave “break”:

cars <- list("limousine", "cabrio", "suv", "supersport", "oldtimer")
for (x in cars) {
print (x)
	if (x == "suv") {
		break
}
}
R

Nell’esempio di codice sopra abbiamo esteso la nostra lista chiamata cars. Vogliamo però in­ter­rom­pe­re la re­sti­tu­zio­ne dei tipi di auto sullo schermo non appena troviamo il tipo SUV. Nella con­di­zio­ne if-else in R uti­liz­zia­mo quindi la già men­zio­na­ta parola chiave “break”.

Saltare ese­cu­zio­ni di cicli for in R: la parola chiave “next”

In alcune ap­pli­ca­zio­ni può essere utile saltare de­ter­mi­na­te ese­cu­zio­ni anziché fermare l’intera ese­cu­zio­ne del ciclo for. Anche a questo scopo il lin­guag­gio di pro­gram­ma­zio­ne R mette a di­spo­si­zio­ne una parola chiave apposita, “next”:

cars <- list("limousine", "cabrio", "suv", "supersport", "oldtimer")
for (x in cars) {
	if (x == "suv") {
		next
}
print(x)
}
R

L’esempio di codice più in alto è ora stato mo­di­fi­ca­to in modo che siano re­sti­tui­ti tutti i tipi di auto della lista tranne i SUV. Anche qui si usa una con­di­zio­ne if, che verifica se l’elemento corrente della lista è un SUV. Se lo è, le istru­zio­ni restanti del corpo del ciclo vengono saltate, pro­se­guen­do con l’ese­cu­zio­ne del ciclo for di R.

Vai al menu prin­ci­pa­le