Operatori logici e strutture di controllo

Home/R/Operatori logici e strutture di controllo

Operatori logici e strutture di controllo

Altre due caratteristiche di R sono l’utilizzo di operatori logici e delle strutture di controllo. Gli operatori logici sono una serie di operatori che permettono di mettere in relazione due oggetti e ci aiutano ad estrarre dati, e sono i seguenti:

< minore > maggiore
== uguale
<= minore o uguale >= maggiore o uguale
!= diverso
& “e”
| “o”
! “non”

Questi operatori permettono di mettere a confronto degli oggetti, oppure di selezionare parti di un oggetto.

**Attenzione, come potete notare l’operatore che misura l’uguaglianza tra due oggetti è dato dal doppio segno uguale. Questo perché quando si attribuiscono uno o più valori a un oggetto, possiamo utilizzare indistintamente il simbolo “<-” o il simbolo “=” ( x <- 10 oppure x = 10 sono notazioni equivalenti. Tipicamente, chi approda a R da altri linguaggi di programmazione, tende a usare la seconda notazione, noi usiamo la prima per non fare confusione)

Vediamo qualche esempio:

TRUE!=FALSE
5 == 7
RSTUDIO != rstudio
5 & 7 == 7 & 5
7 > 2

Le strutture di controllo, insieme agli operatori logici, permettono di specificare delle condizioni, ad esempio nella creazione di funzioni o nella selezione di parti di un oggetto

 

Istruzioni condizionali
if, else servono a testare una condizione
for ripete una serie di istruzioni per un certo numero di volte
while mette in esecuzione delle istruzioni se una condizione è soddisfatta
repeat mette in esecuzione delle istruzioni un certo numero di volte
break interrompe l’esecuzione di istruzioni
next salta un elemento
return esce da una funzione

Vediamo alcuni esempi:

# istruzioni condizionali: “if”

# creiamo per prima cosa un vettore:
x <- 5

if (x == 5){
print ("x è uguale a 5")
}
[1] "x è uguale a 5"
“If” può essere utilizzato da solo oppure con “else”: 


# if + else
y <- 10

if (y > 5){
print ("y è maggiore di 5")
}else{
print ("y è minore di 5")
}

In questo caso, abbiamo creato un oggetto, y, che è pari a 10, e abbiamo posto due condizioni: se y è uguale a 5, il sistema stampa la frase “y è maggiore di 5”, se la condizione non è soddisfatta, stampa l’altra frase.

Un’altra delle strutture di controllo o istruzioni condizionali è while. A seconda dell’utilizzo di while rischiamo di far partire un loop da cui possiamo uscire solo uscendo forzatamente dal programma, ad esempio scrivendo qualcosa del genere:

# while

while(1+1 == 2)
print(“okay")

[1] okay
[1] okay
[1] okay
[1] okay
[1] okay
…

# il risultato sarà una lista infinita da cui possiamo uscire solo chiudendo forzatamente il programma

While può essere usato anche insieme ad altre strutture di controllo:

# creiamo l’oggetto “uova”
uova <- 3

# se uova è minore di 4, aggiungiamo un uovo, quando è pari a 4 allora aggiungiamo la farina
while (uova < 4) {
print("aggiungi un uovo")
uova <- uova +1
if ( uova == 4)
print("ora aggiungi la farina")
}

L’operatore break permette di interrompere il loop (evitando di dover chiudere forzatamente, come abbiamo visto qua sopra, ad esempio:

# break

x <- 1

while (x <= 10) {
print (x * 2)
if ( (x * 2)  > 20) {
break
}
x <- x + 1

Posto l’oggetto x pari a uno, per x minore o uguale a dieci, R stampa x per due. Quando x per due diventa maggiore di 20, allora il ciclo si interrompe.

Un altro operatore è for, che permette di ripetere un’azione un certo numero di volte, ad esempio, posto un vettore di 8 elementi, per 8 volte. Questo tipo di loop ha due notazioni possibili:

# per prima cosa creiamo un vettore
vettore <- c(1,2,3,4,5,6,7,8)

# notazione uno
> for (v in vettore) {
print(v)
}


# notazione 2
for (v in 1:length(vettore)) {
print(vettore[v])
}

Entrambe le notazioni indicano che dato un elemento nel vettore v, questo va stampato.

In questo post abbiamo parlato di operatori logici e strutture di controllo in R. Questo post fa parte di una serie di post sulle basi di R. Prosegui imparando di più sugli errori comuni nella programmazione R, come creare una funzione, e come utilizzare RStudio per semplificare il lavoro. Se questi post non sono sufficienti, sei il benvenuto al mio corso introduttivo sulla programmazione R.

About the Author:

Leave A Comment