Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Primi passi con R

Iniziare ad utilizzare il framework e linguaggio di programmazione R: dall'installazione all'utilizzo della console interattiva.
Iniziare ad utilizzare il framework e linguaggio di programmazione R: dall'installazione all'utilizzo della console interattiva.
Link copiato negli appunti

R è un ambiente di programmazione nato per la statistica negli anni 90 come costola open-source di un linguaggio, di circa vent'anni più vecchio, chiamato S e sottoposto a licenza commerciale. R è oggi molto diffuso, grazie alla flessibilità della sintassi, alla sua natura modulare e la sempre più vasta comunità che ne supporta lo sviluppo. Esso rappresenta oggi un framework in grado di acquisire moli di dati dalle sorgenti più disparate, offrendo strumenti per una loro analisi immediata ed efficiente, anche al di fuori della nicchia scientifica della statistica. Nonostante possa sembrare una tecnologia di nicchia, ad oggi R risulta essere al 15° posto della classifica di Tiobe che valuta la diffusione dei linguaggi di programmazione.

Installazione di R

Vediamo subito come installare R. Questo framework è multipiattaforma e di libera distribuzione, pertanto potremo approntare il nostro ambiente di lavoro su qualsiasi sistema operativo. La prima cosa da fare è accedere al sito web del progetto CRAN (Comprehensive R Archive Network), da cui si potranno scaricare sorgenti ed eseguibili per i vari sistemi operativi. Per tutti gli sviluppatori R, CRAN resta il fulcro dell'acquisizione di software, sia di base sia di espansione. Le opzioni di installazione saranno diverse ma, tanto per citare piattaforme comuni, per Windows si potrà scaricare un eseguibile che fornirà i binari di base, mentre per Ubuntu ed altre distribuzioni Linux il framework sarà reperibile nei repository ufficiali. In Ubuntu, ad esempio, sarà sufficiente impartire da riga di comando la seguente direttiva:

sudo apt-get install r-base

La console interattiva

Le modalità di avvio di R variano da sistema a sistema: su Windows avremo un collegamento su Desktop mentre su Linux si invoca semplicemente da shell il comando R. Iniziamo subito a fornirgli comandi mediante una console interattiva (dalla quale si può uscire in qualsiasi momento con il comando q(), dopo aver confermato o meno di voler salvare l'area di lavoro).

Nella console si possono da subito sperimentare:

  • operazioni aritmetiche:
    > 4*6
    [1] 24
    > (4+7)*23/2
    [1] 126.5

    Il risultato verrà restituito immediatamente, e con l'utilizzo di un punto e virgola (;) si potranno inoltrare più comandi contemporaneamente:
    > 4+5 ; 7*6 ; (8+9)*65/7
    [1] 9
    [1] 42
    [1] 157.8571
  • variabili:
    > x<-6*7
    > x
    [1] 42
    > y=56/3
    > y
    [1] 18.66667
    > 32*(5+2) -> z
    > z
    [1] 224

    Si noti che le variabili possono ricevere un'assegnazione di valore, indifferentemente, con gli operatori <-, = e ->. Inoltre, si ricordi che le variabili in R sono case-sensitive, pertanto invocare il nome di una di esse con caratteri maiuscoli o minuscoli non è la stessa cosa:
    > x<-4
    > X
    Errore: oggetto "X" non trovato
  • commenti, introdotti dal simbolo #:
    m<-56 # tutto quello che scrivo qui è un commento!

Tipi di dato

R assegna un tipo di dato ad ogni variabile, compatibilmente con il genere di informazione che essa racchiude. Le informazioni trattate appartengono alle categorie più comuni, come numeric (per numeri con o senza virgola), character (per le stringhe), logical (che può valere solo TRUE o FALSE), ma anche tipi particolari come complex per i numeri complessi. Una volta assegnato un valore alla variabile, se ne può verificare il tipo di dato corrispondente mediante la funzione class:

> intero <- 4
> class(intero)
[1] "numeric"
> virgola <- 34.71
> class(virgola)
[1] "numeric"
> stringa <- "Oggi è un nuovo giorno"
> class(stringa)
[1] "character"
> complesso <- 3+5i
> class(complesso)
[1] "complex"
> logico <- TRUE
> class(logico)
[1] "logical"

Strutture dati in R

Tra i tipi di dato di R, se ne annoverano alcuni - dall'utilizzo vastissimo in questo ambiente - che ricordano comuni strutture dati di altri linguaggi di programmazione:

  • vettori: si tratta di sequenze di valori create mediante la funzione c():
    > numeri <- c(25,53,81,22,79,12,45)
    > numeri
    [1] 25 53 81 22 79 12 45

    Si può accedere ai singoli elementi indicando, tramite parentesi quadre, una posizione specifica (il cui conteggio non parte da 0 bensì da 1) o un loro intervallo:

    > numeri <- c(25,53,81,22,79,12,45)
    > numeri
    [1] 25 53 81 22 79 12 45
    > numeri[3]         # accesso alla posizione 3
    [1] 81
    > numeri[4:6]		# accesso ai valori di posizione da 4 a 6
    [1] 22 79 12
    > numeri[c(4,6)]    # accesso alle sole posizioni 4 e 6
    [1] 22 12
    > numeri[-c(4,6)]   # accesso a tutte le posizioni tranne 4 e 6
    [1] 25 53 81 79 45
    > numeri[6:2]       # accesso alle posizioni da 6 a 2 (lettura a ritroso)
    [1] 12 79 22 81 53
    > numeri[-(2:6)]    # accesso a tutti valori esclusi quelli nelle posizioni da 2 a 6
    [1] 25 45

    L'accesso potrà essere effettuato anche in scrittura con le stesse modalità:

    > numeri[3]=777
    > numeri[c(5:7)]=18
    > numeri
    [1]  25  53 777  22  18  18  18
  • matrici: sono strutture bidimensionali di valori che possono essere inizializzate utilizzando vettori:
    > matrice <- matrix( c(18,56,21,78,39,4), nrow = 3, ncol = 2)
    > matrice
         [,1] [,2]
    [1,]   18   78
    [2,]   56   39
    [3,]   21    4

    Gli elementi presenti nel vettore di inizializzazione saranno distribuiti, per default, in colonne a meno che non si passi un ulteriore parametro byrow:

    > matrice <- matrix( c(18,56,21,78,39,4), nrow = 3, ncol = 2,byrow=TRUE)
    > matrice
         [,1] [,2]
    [1,]   18   56
    [2,]   21   78
    [3,]   39    4

    L'accesso agli elementi potrà essere effettuato - sia in lettura sia in scrittura - come abbiamo visto per i vettori, senza dimenticare
    che questa volta dovremo passare prima il riferimento per le righe e poi quello per le colonne:

    > matrice[1,2]
    [1] 56
    > matrice[c(2,3),2]
    [1] 78  4
    > matrice[-c(2,3),2]
    [1] 56
    > matrice[c(3,2),2]
    [1]  4 78
  • array: possono essere visti come estensione multidimensionale delle matrici. Mediante la funzione array possiamo definirli e successivamente lavorare con i valori in essi contenuti. Il seguente esempio dichiara due array di dimensione 3x2:
    > a %lt;- array(dim = c(3,2,2))
    > a
    , , 1
         [,1] [,2]
    [1,]   NA   NA
    [2,]   NA   NA
    [3,]   NA   NA
    , , 2
         [,1] [,2]
    [1,]   NA   NA
    [2,]   NA   NA
    [3,]   NA   NA

    Nessun valore è ancora assegnato ai suoi elementi (figurano come NA) perciò potrà essere cambiato velocemente con un comando tipo:

    > a[1,2,1]=18

    Ogni elemento presente in un array è individuato mediante un vettore di indici che ne costituisce le coordinate e la dimensione di tale vettore è uguale al numero di dimensioni dell'array.

  • lista: è una collezione di elementi eterogenei come quella nel seguente esempio che viene popolata, rispettivamente, con un vettore di numeri, una stringa e un numero:
    > l <- list(c(12,34,5), "testo di esempio", 6)

    Sfruttiamo ancora una volta la funzione class per notare che la selezione di un elemento nella lista mediante le parentesi quadre produce una lista a sua volta mentre utilizzando le doppie parentesi quadre estrarremo il vettore numerico in sè stesso: incontreremo questo concetto ancora nel corso della guida.

    > class(l[1])
    [1] "list"
    > class(l[[1]])
    [1] "numeric"
    > l[1]
    [[1]]
    [1] 12 34  5
    > l[[1]]
    [1] 12 34  5
    > l[[1]][2]
    [1] 34

Cosa ci aspetta

I tipi di dato che abbiamo visto sinora sono i mattoni fondamentali del lavoro in R. Nelle prossime lezioni, approcceremo costrutti più articolati come i data.frame e con essi saremo pronti ad affrontare il lavoro con dati provenienti da varie sorgenti grazie alle tante funzioni che questa piattaforma offre e agli svariati moduli che sviluppatori volenterosi hanno messo a nostra disposizione.

Ti consigliamo anche