R (Statistical programming) – Le basi

Dopo aver introdotto R nell’articolo “Introduzione a R (Statistical programming)“, si descrivono ora le nozioni base del linguaggio e si introduce l’ambiente di sviluppo. Il presente articolo è il primo di una serie dedicata a R che descriverà nei dettagli la sintassi e le principali caratteristiche del linguaggio.
Affronteremo ora i seguenti argomenti:
- La command-line interface (CLI), o più brevemente la console di R;
- I workspace e le variabili;
- I principali ambienti di sviluppo
La console di R
Dopo aver installato R, seguendo le istruzioni dal sito ufficiale della community di R (r-project.org), è possibile utilizzarne la console. Questa permette di lanciare comandi in ambiente R, proprio come il bash di linux, il prompt di windows o la CLI di powershell.
La console di R presenta alcune similitudini con il bash di GNU/Linux. Per chi è abituato a sviluppare in ambiente Windows, si ricorda che in R i paths al file system vengono sempre editati con il forward slash (/) invece del back slash (\). A titolo di esempio, si consideri il comando setwd
che permette di definire la posizione di un workspace di R. Per indicare il path al workspace si usa il forward slash nella destinazione. In alternativa, si puo’ utilizzare il doppio simbolo di backslash (\\), il primo dei quali viene interpretato come comando di escape da R.
> setwd("c:/tmp/R") # o anche: setwd("c:\\tmp\\R")
Alcuni comandi e shortcut utili sono i seguenti:
quit()
oq()
per uscire dalla shell;- lo shortcut
CTRL+L
corrisponde al clear della console; getwd()
ritorna il path al workspace nel quale si lavora;setwd("path")
imposta il path al workspace;ls()
ritorna tutte le variabili create in una sessione di R .rm([variabili])
rimuove tutte o alcune delle variabili della sessione corrente
La console interagisce direttamente con l’engine di R. E’ quindi possibile far stampare calcoli base come somme o sottrazioni, o anche semplici letterali:
> 1+2 [1] 3 > 1-100 [1] -99 > "Hello Darwin!" [1] "Hello Darwin!"
I workspaces e le variabili
I workspaces in R rappresentano l’ambiente di lavoro. Nel workspace vengono salvati gli oggetti della sessione in uso(vettori, matrici, ecc.). Alla fine della sessione di lavoro si puo’ decidere di salvare o meno l’immagine della sessione in uso che verrà ricaricata automaticamente al successivo lancio di R.
E’ possibile preservare sessioni diverse in directories diverse. I comandi principali per interagire con i workspaces sono i seguenti:
# visualizza la directory corrente del workspace getws() # configura la directory nella quale salvare la sessione setws("physical path") # salva l'immagine del workspace nella directory correntemente in uso in un file con estensione .RData save.image() #ricarica un'immagine precedetemnte salvata load("miofile.RData")
In R si possono allocare i dati in variabili. R assegna sempre un oggetto alla variabile, per questo non è necessario dichiarare il tipo della variabile come nei linguaggi dichiarativi. Quindi, in R il tipo della variabile rispecchia il tipo dell’oggetto assegnato. R viene considerato un linguaggio “weakly typed” intendendo che non è necessario dichiarare esplicitamente il tipo della variabile e neppure convertire esplicitamente un tipo in un altro. Questa definizione è spesso contestata in quanto fuorviante. E’ più corretto definire R come un linguaggio nel quale i tipi vengono liberamente interpretati in fase di run time.
Gli oggetti che si possono assegnare ad una variabile sono fondamentalmente:
- Vectors
- Lists
- Matrices
- Arrays
- Factors
- Data Frames
Nel proseguo di questa serie di articoli dedicati ad R si analizzeranno nel dettaglio le caratteristiche e le proprietà di ogni singolo oggetto. Per il momento si riportano qui sotto i tipi principali:
- Numeric: valori numerici
- Integer: valori numerici interi
- Double: valori numerici a doppia precisione (virgola mobile)
- Logical: valori booleani
- Character: stringhe di caratteri
- Raw: serie di bytes
- Complex: numeri complessi
Per verificare il tipo di dato contenuto in una variabile R si utilizza la funzione is.[datatype]([variable])
. La funzione globale class()
ritorna invece il tipo della variabile. Qui di seguito alcuni esempi:
#assign numeric to variable > x <- 10.5 > x [1] 10.5 > class(x) [1] "numeric" #test numeric type > is.double(x) [1] TRUE > is.integer(x) [1] FALSE > is.numeric(x) [1] TRUE
#assign raw bytes to variable > y <- raw(2) > y [1] 00 00 > class(y) [1] "raw"
#assign string to variable > z <- 'this is a test' > z [1] "this is a test" #test type > is.character(z) [1] TRUE > is.numeric(z) [1] FALSE
Come riportato precedentemente, in R i tipi delle variabili vengono liberamente interpretati in fase di runtime. E’ comunque possibile convertire esplicitamente una variabile o un letterale da un tipo all’altro con la funzione as.[tipo]([letterale|variabile])
:
> x <- 10 > x is.integer(x) [1] FALSE > is.double(x) [1] TRUE > y <- as.integer(10) > is.integer(y) [1] TRUE
Gli script in R, R Studio e risorse online
E’ sempre possibile salvare e caricare scripts in ambiente R. Questo lo si puo’ fare sia con la console interattiva che con l’ambiente di sviluppo di riferimento, ovvero R Studio. Nella configurazione di default R Studio presenta quattro riquadri nei quali è possibile:
- Editare e lanciare uno script
- Visualizzare le funzioni, le variabili d’ambiente e lo storico delle azioni
- Utilizzare una console integrata
- Navigare la repository del progetto, visualizzare i plots, ecc.
Online esistono ambienti R interattivi nei quali si possono lanciare scripts o caricare interi progetti. Tra i molti si segnalano R-Fiddle e Coding Ground con l’executer per R.