R e RStudio
- Scarica R da CRAN cran.r-project.org
- Scarica RStudio da https://posit.co/download/rstudio-desktop/, la versione Desktop con free licence.
Per controllare di non avere una versione datata di R usa il comando
sessionInfo().
Concetti e terminologia base per la programmazione in R
Workspace
R è object-oriented, nel senso che possiamo creare entità chiamate objects. Questi possono essere di diverso tipo, come singoli valori, vettori, matrici, funzioni o strutture ancora più complesse, come liste e dataframe.
a <- 2
b <- 1:10
Questi oggetti vengono memorizzati in un’area dedicata, chiamata
workspace. È possibile controllare gli oggetti
attualmente presenti nell’area di lavoro dalla scheda
Environment nella finestra in alto a destra o utilizzando il
comando ls()
ls()
## [1] "a" "b"
La funzione rm() può essere utilizzata per eliminare uno
(o più) oggetti dal workspace
rm(a)
Da questo momento, l’oggetto "a" non sarà più nell’area
di lavoro.
Un comando utile per pulire completamente il workspace
è
rm(list=ls())
Alternativamente, si può usare anche Clear Workspace dalla scheda Session.
Al termine di una sessione può essere utile salvare lo spazio di
lavoro con la funzione save.image(), indicando come
argomento il nome scelto:
save.image(file="myobjects.RData")
Questa funzione salva tutti gli oggetti nell’area di lavoro corrente
nel file “myobjects.RData”. L’area di lavoro salvata può essere caricata
in una nuova sessione con il comando load()
load("myobjects.RData")
Il menu in RStudio ha voci specifiche per il salvataggio/caricamento dell’area di lavoro (si vedano le entrate opportune della scheda Session).
Working directory
Quando si avvia una nuova sessione l’utente può impostare la
working directory, utilizzando il comando
setwd(). In generale è consigliabile utilizzare cartelle
dedicate ai diversi progetti, al fine di evitare
possibili sovrapposizioni di dati. La cartella di lavoro corrente può
essere vista con il comando getwd().
getwd()
## [1] "C:/Users/39349/Documents/teaching_2024/ADPI/lab/basics"
Il menu in RStudio ha voci specifiche per cambiare la cartella di lavoro. Ad esempio, l’utente può sceglierla usando dal menu Session -> Set Working directory.
Packages
R viene fornito con alcuni pacchetti standard che contengono la
maggior parte delle funzioni utili a eseguire i comandi di base. Per
analisi più complesse potrebbero essere necessari pacchetti di R
aggiuntivi che devono essere installati e caricati utilizzando il menu
Packages in RStudio o dalla riga di comando. Ad
esempio, consideriamo il pacchetto ggplot2, per installarlo
sul computer si digiti
install.packages("ggplot2")
mentre per caricarlo usiamo la funzione library()
library(ggplot2)
Molti pacchetti sono forniti con una “vignetta” o un tutorial su come utilizzare il pacchetto.
Per ottenere un elenco di tutte le vignette di un pacchetto, utilizza
la funzione vignette(), specificando il nome del pacchetto
con l’opzione package:
vignette(package = "ggplot2")
Per aprire una vignetta è possibile utilizzare anche la funzione
vignette(). Ad esempio, per aprire la vignetta chiamata
“extending-ggplot2” per il pacchetto ggplot2, esegui:
vignette("extending-ggplot2", package = "ggplot2")
Help
R dispone di un Help molto ben organizzato. Il modo
più semplice per ottenere assistenza in RStudio è usare la scheda
Help sulla barra degli strumenti.
Se conosci il nome della
funzione1
per la quale desideri un aiuto, devi semplicemente chiamare la routine
help() nel seguente modo:
help(nome_funzione)
Quindi, se si vuole conoscere la funzione read.table
basta digitare
help(read.table)
# o
?read.table
Se non conosci il nome esatto di una funzione, puoi intraprendere una ricerca inserendo una parola chiave digitando:
help.search("read")
Con il comando
help.start()
l’help online si attiva nel web browser.
Basi del linguaggio
Impariamo a conoscere un po’ di terminologia base:
- Objects: impareremo come si assegnano valori a oggetti (nominati) e come si mostra il valore degli oggetti (nominati)
- Tipi di dati: integer, double/numeric, logical, e character
- Strutture di dati: vector, factor, list, dataframe
- Conditionals o operazioni logiche: T/F, operatori logici
- Funzioni o comandi: le funzioni effettuano un compito in R. Prendono in input i cosiddetti arguments e restituiscono outputs. Gli argomenti sono o specificati manualmente o, altrimenti, sono i valori assunti di default dalla funzione.
- Error, Warning, Message
Tips
- R è “case-sensitive”, cioè considera maiuscole e minuscole caratteri diversi (e.g., A e a sono oggetti diversi);
- regole per creare un nome:
- deve iniziare con una lettera alfabetica;
- tutte le lettere e i numeri possono essere utilizzati mentre non è possibile utilizzare spazi e simboli di punteggiatura, ad eccezione di underscore (’_‘) e punto (‘.’);
- consigli per creare i nomi:
- usa solo lettere minuscole;
- usa l’underscore come separatore;
- evita nomi già usati da R
- i comandi devono essere separati da un punto e virgola (‘;’) oppure da capolinea;
- i testi dei commenti possono essere aggiunti dopo il simbolo ‘#’, ciò che segue per tutta la riga viene ignorato da R;
- è possibile richiamare i comandi impartiti in precedenza utilizzando la freccia “su” della tastiera.
Operazioni semplici
I comandi di base consistono in
- espressioni
- assegnazioni.
Se il comando è un’espressione, R fornisce il risultato della valutazione dell’espressione, come illustrato negli esempi seguenti.
1+2+3
## [1] 6
2+3*4
## [1] 14
2+(3*4)
## [1] 14
(2 + 3) * 4
## [1] 20
3/2+1
## [1] 2.5
4*3^3
## [1] 108
Si noti l’uso delle parentesi per modificare l’ordine di priorità delle operazioni.
Gli operatori aritmetici in R sono
+ addizione
- sottrazione
* moltiplicazione
/ divisione
^ esponenziazione
x %% y modulo (x mod y)
x %/% y divisione intera
Tutte le funzioni matematiche elementari sono disponibili in R come funzioni base. Alcune sono
sqrt square root
abs absolute value
sin, cos, tan funzioni
trigonometriche
asin, acos,
atan funzioni trigonometriche inverse
sum, mean, var sum, arithmetic
mean, variance
max, min maximun, minimum
exp, log exponential, logarithm
Le espressioni che coinvolgono operatori logici restituiscono un valore logico (VERO o FALSO), come nei seguenti esempi:
2 > 10
## [1] FALSE
2 <= 10
## [1] TRUE
5!=5
## [1] FALSE
Operatori logici per formare e combinare espressioni con risultato booleano
\(<\) less than
\(<=\) less than or equal to
\(>\) greater than
\(>=\) greater than or equal to
\(==\) exactly equal to
!\(=\) not equal to
!x Not x
x | y x
OR y
x & y x AND y
%in% belongs to (in the set)
Oppure un altro tipo di dato è quello testuale,
e.g. possiamo digitare il testo (tra virgolette
"/'):
"Hello"
## [1] "Hello"
Abbiamo visto come R sia in grado di gestire vari tipi di dati: numeri, valori logici (VERO e FALSO) e stringhe di testo.
Un’assegnazione valuta un’espressione e ne salva i
risultati in un oggetto dotato di nome. L’operatore di assegnazione
standard in R è <- (il simbolo = viene
talvolta utilizzato, ma non funziona in alcune situazioni speciali).
## Note: Generic code
[name of object] <- [thing I want to save]
RStudio’s keyboard shortcut for the gets arrow
<-isAlt+-on Windows andOption+-on Macs.
To see a full list of RStudio keyboard shortcuts, go to the “Help” tab in RStudio and select “Keyboard Shortcuts”.
Gli oggetti creati tramite un’assegnazione possono essere
riutilizzati in espressioni o altre assegnazioni. Ad esempio, il codice
seguente creerà un oggetto di nome x con valore \(\sqrt{2}\):
x <- sqrt(2)
Per vedere il valore, basta semplicemente scrivere il nome dell’oggetto. Questo stamperà il valore dell’oggetto nella console:
x # Print the object x
## [1] 1.414214
Oppure, per stamparlo al momento della creazione basta racchiudere il comando tra parentesi tonde:
(x <- sqrt(2))
## [1] 1.414214
È anche possibile fare un’assegnazione (da sinistra a destra) utilizzando il simbolo \(\rightarrow\).
Il contenuto che assegniamo ad un oggetto può essere un valore numerico, un valore logico, un carattere o stringa (scritta tra virgolette), il nome di un’altra variabile, il risultato di un’espressione o l’output di una funzione.
x^3 -> y
y
## [1] 2.828427
z <- log(y)+x
z
## [1] 2.453934
word <- "Hello"
n <- nchar(word)
Esercizio
- Utilizzare la funzione
log()per calcolare il log in base 3 di 9. - Calcola il quoziente intero e il resto di 119 diviso per 13.
- Verifica che 7 + 3 - 5 x 2 e (7 + 3) - (5 x 2) sono equivalenti.
- Utilizzare un’opportuna operazione logica per scoprire se 574 è un multiplo di 7.
- Creare una costante scalare x con valore 5.0359. Quindi, utilizzare
la funzione
ceiling()su x. Cosa ottieni? In che modo l’output differisce dafloor(x)? - Utilizzare la funzione
round()per controllare il numero di cifre decimali in x = 5.0359 (Suggerimento: provare a utilizzare l’help.)
Alcuni nomi di funzioni richiedono di essere scritti tra virgolette (o apici) come, e.g.,
if,else,for,in,repeat,while,breakandnext.↩︎