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:
5 == 7
RSTUDIO != rstudio
5 & 7 == 7 & 5
7 > 2[/code]
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:
# creiamo per prima cosa un vettore:
x <- 5
if (x == 5){
print ("x è uguale a 5")
}[1] "x è uguale a 5"[/code]
# if + else
y <- 10
if (y > 5){
print ("y è maggiore di 5")
}else{
print ("y è minore di 5")
}[/code]
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(1+1 == 2)
print(“okay")
…
# il risultato sarà una lista infinita da cui possiamo uscire solo chiudendo forzatamente il programma[/code]
While può essere usato anche insieme ad altre strutture di controllo:
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")
}[/code]
L’operatore break permette di interrompere il loop (evitando di dover chiudere forzatamente, come abbiamo visto qua sopra, ad esempio:
x <- 1
while (x <= 10) {
print (x * 2)
if ( (x * 2) > 20) {
break
}
x <- x + 1[/code]
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:
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])
}[/code]
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.
Leave A Comment