Come in pressoché tutti gli altri linguaggi, anche nella pro­gram­ma­zio­ne in R l’ese­cu­zio­ne limitata di singoli blocchi di codice è im­pre­scin­di­bi­le. Con la struttura di controllo if-else potete formulare istru­zio­ni, con­trol­lan­do l’ese­cu­zio­ne del vostro programma.

Pos­si­bi­li­tà di impiego delle istru­zio­ni if-else in R

Le istru­zio­ni if-else, spesso chiamate anche rami con­di­zio­na­li, fanno in modo che de­ter­mi­na­ti blocchi di istru­zio­ni siano eseguiti soltanto quando una con­di­zio­ne è sod­di­sfat­ta. La fun­zio­na­li­tà con­di­zio­na­le delle istru­zio­ni if-else è ele­men­ta­re, pertanto è im­pre­scin­di­bi­le nella maggior parte dei programmi. So­prat­tut­to negli algoritmi più complessi è spesso ne­ces­sa­rio usare queste con­di­zio­ni.

Usare istru­zio­ni if-else nel codice sorgente è pratico ad esempio per testare un de­ter­mi­na­to valore nell’input di un utente. Tuttavia, in R le strutture if-else trovano ap­pli­ca­zio­ne perlopiù insieme ai cicli for in R: durante una ricerca in una struttura di dati, potete in­ter­rom­pe­re il ciclo con un’istru­zio­ne if non appena avete trovato il valore de­si­de­ra­to.

Consiglio

Un’ottima idea per con­ser­va­re i vostri progetti e programmi in un luogo sicuro è lo spazio web di IONOS. I backup au­to­ma­ti­ci as­si­cu­ra­no che i vostri dati siano protetti al meglio contro eventuali perdite.

La sintassi delle istru­zio­ni if-else in R

Potete inserire le istru­zio­ni if-else in R in diversi modi, com­bi­nan­do fra loro le parole chiave “if”, “else” ed “else if”. Nella logica di base non cambia comunque nulla: l’ese­cu­zio­ne di singoli blocchi di codice è sempre collegata a una con­di­zio­ne.

Anche la sintassi è definita in modo rigoroso. Alla parola chiave “if” segue sempre una con­di­zio­ne spe­ci­fi­ca­ta tra parentesi tonde. All’interno della con­di­zio­ne sono spesso uti­liz­za­ti operatori di confronto arit­me­ti­ci o logici. Segue un blocco di codice fra parentesi graffe, che viene eseguito solo quando è sod­di­sfat­ta la con­di­zio­ne spe­ci­fi­ca­ta. A seconda della finalità della vostra istru­zio­ne, con la parola chiave “else” potete ora in­tro­dur­re un blocco di codice che viene eseguito quando la con­di­zio­ne if non è sod­di­sfat­ta. Inoltre, la parola chiave “else” vi offre la pos­si­bi­li­tà di formulare altre con­di­zio­ni.

N.B.

Se i blocchi di codice che de­si­de­ra­te eseguire sono co­sti­tui­ti da una sola riga, nelle istru­zio­ni if-else in R potete tra­la­scia­re le parentesi graffe. Può essere utile per mi­glio­ra­re la leg­gi­bi­li­tà. Per chi ha appena iniziato a imparare a pro­gram­ma­re è tuttavia con­si­glia­bi­le inserire le parentesi come d’abitudine per evitare che qualcosa vada storto.

L’istru­zio­ne if in R

Se de­si­de­ra­te eseguire nel vostro codice una de­ter­mi­na­ta azione con­di­zio­na­le e pro­se­gui­re con l’ese­cu­zio­ne standard del programma, vi basta uti­liz­za­re un’unica istru­zio­ne if.

a <- 0
b <- 40
if (a == 0) {
    print("Zero division not allowed")
    stop()
}
c <- b / a
R

Nell’esempio di codice sopra, il numero salvato nella variabile b deve essere diviso per il numero nella variabile a. Poiché no­to­ria­men­te la divisione per 0 non è ammessa, con la con­di­zio­ne if si verifica se il valore salvato in a è uno 0. Solo se questa con­di­zio­ne è sod­di­sfat­ta il programma esegue il codice fra parentesi graffe con cui l’ese­cu­zio­ne viene arrestata.

L’istru­zio­ne if-else in R

Se volete eseguire blocchi di codice in base a una con­di­zio­ne non sod­di­sfat­ta, potete usare un’istru­zio­ne if-else. Come nel caso pre­ce­den­te, occorre formulare prima una con­di­zio­ne if. Se tale con­di­zio­ne non è sod­di­sfat­ta, il programma salta a un blocco di codice scritto ap­po­si­ta­men­te per questa evenienza. Per chiarire, ri­cor­ria­mo anche qui a un esempio:

a <- 4
b <- 2
if (b < a) {
    print("a is greater than b")
}
else {
    print("a and b are equal or b is greater than a")
}
R

Vengono create nuo­va­men­te due variabili a e b che con­ten­go­no numeri interi. Con la con­di­zio­ne if si verifica se il valore b è inferiore ad a. Se sì, viene eseguito il blocco di istru­zio­ne all’interno delle parentesi graffe. In caso contrario, il programma salta di­ret­ta­men­te al blocco di istru­zio­ne dopo la parola chiave “else” ed esegue le righe di codice in esso contenute.

L’istru­zio­ne else-if in R

In alcuni casi potreste non voler ve­ri­fi­ca­re una sola con­di­zio­ne, ma più con­di­zio­ni con­tem­po­ra­nea­men­te. A questo scopo è di­spo­ni­bi­le la parola chiave “else if”. Se avete fa­mi­lia­ri­tà con le istru­zio­ni if-else di Python, pro­ba­bil­men­te conoscete già l’istru­zio­ne else-if in R con la parola chiave “elif”.

a <- 4
b <- 2
if (b < a) {
    print("a is greater than b")
}
else if (b > a) {
    print("b is greater than a")
}
R

L’esempio di codice non è molto diverso da quello pre­ce­den­te. Sem­pli­ce­men­te, l’istru­zio­ne else è stata so­sti­tui­ta da un’istru­zio­ne else-if. Come avviene per l’istru­zio­ne if, dopo l’istru­zio­ne else-if occorre inserire una con­di­zio­ne fra parentesi tonde.

Tenete presente che le con­di­zio­ni spe­ci­fi­ca­te con “else if” si escludono a vicenda. Se, come nel nostro caso, la prima con­di­zio­ne è già sod­di­sfat­ta, il codice in­tro­dot­to con “else if” non viene proprio eseguito. Con le istru­zio­ni else-if si risparmia quindi potenza di calcolo rispetto a usare diverse istru­zio­ni if semplici.

Vai al menu prin­ci­pa­le