Corso Introduttivo all`utilizzo di R

Corso Introduttivo all utilizzo
di R!
Prof.ssa D.F. Iezzi
[email protected]
Il software R
q Il software R è distribuito gratuitamente come
software Open Source con licenza GPL (General
Public License) ed è disponibile per diverse
architetture e i più comuni sistemi operativi:
Linux, MacOS, Unix, Windows.
q La facilità di reperimento e l assenza di costi
sono tra i fattori che hanno favorito il
successo di R. E
sufficiente aprire un
programma per la navigazione di internet
comunemente denominato browser e visitare il
sito http://www.r-project.org.
Che cosa è
q R è un ambiente di programmazione (un
insieme di funzioni, librerie, oggetti)
q R è specializzato in analisi dei dati e
rappresentazioni grafiche
q R opera su sistemi operativi UNIX, Windows e
Macintosh
q R è cugino di S: entrambi dialetti del più
noto S-plus.
D. Fioredistella IEZZI
e-mail: [email protected]
R è "free"
Free nel senso di gratis
Free nel senso di "libero".
R è, infatti, un programma open source e la libertà è
quella di:
q usare R per qualsiasi scopo
q studiare il software e adattarlo alle proprie necessità
q sviluppare il software e rilasciare pubblicamente i
propri miglioramenti in modo che chiunque possa
beneficiarne
q copiare e distribuire il software
D. Fioredistella IEZZI
e-mail: [email protected]
La pagina web di R
La pagina web cui fa riferimento R è:
http://www.r-project.org
Da questo indirizzo è possibile:
Avere informazioni sul software, sugli aggiornamenti e cercare
informazioni collegate
Scaricare manuali e documentazione sull utilizzo di R
Accedere al CRAN (Comprehensive R Archive Network) da cui è
possibile:
Scaricare una copia del programma la versione precompilata, il
codice sorgente
Scaricare i pacchetti aggiuntivi
D. Fioredistella IEZZI
e-mail: [email protected]
Installazione di R
La versione corrente di R è R 2.12.2
Per installare R per Windows si seguano i seguenti passi:
Da http://www.r-project.org accedere al CRAN;
Scegliere da dove scaricare l eseguibile di R (ad esempio
da
http://cran.stat.unipd.it/)
selezionare il link Windows (o il sistema operativo in
uso)
nella pagina aperta cliccare sul link base;
scaricare R-2.10.1-win32.exe (circa 32 Mb)
Eseguire il file scaricato seguendo le istruzioni fornite.
D. Fioredistella IEZZI
e-mail: [email protected]
R è un progetto di collaborazione con molti contributi
esterni.
Scrivi contributors() per maggiori informazioni e
citation() per sapere come citare R o i pacchetti di
R nelle pubblicazioni. Scrivi demo() per una
dimostrazione, help() per la guida in linea, o
help.start() per l help navigabile con browser HTML.
Scrivi
q()
per uscire da R.
D. Fioredistella IEZZI
e-mail: [email protected]
La console
La procedura di caricamento ed attivazione del programma
R consiste nel procedere ad un doppio click sull icona del
programma che normalmente viene visualizzato sul Desktop
del sistema operativo. Apparirà la cosiddetta console di R
con il seguente simbolo:!
>!
detto prompt dei comandi che segnala che R è disponibile
ad accettare comandi da digitare sulla corrispondente
linea. I comandi verranno eseguiti solo se scritti in modo
sintatticamente corretto e completati con il tasto di Invio
[Return]. !
!
Operazioni numeriche
D. Fioredistella IEZZI
e-mail: [email protected]
Operazioni logiche
D. Fioredistella IEZZI
e-mail: [email protected]
Il comando di assegnazione per
caratteri numerici
Per assegnare un valore ad un oggetto:
<nome oggetto> <- <valore>
oppure
<nome oggetto> = <valore>
Ad esempio
> x <- 4
> y <- 3*2
> x > y
[1] FALSE
abbiamo così creato l oggetto x che contiene il valore 4.
Un ulteriore assegnazione modifica il valore
> x <- 2
> x
[1] 2
e-mail: [email protected]
Il comando di assegnazione per
caratteri stringa
Per assegnare un ad un oggetto:
< nome oggetto><- caratteri stringa
oppure
<nome oggetto> = caratteri stringa
Ad esempio
d<-"prova"
> d
[1] "prova"
> d="Ciao"
> e= Simona"
> d
[1] "Ciao"
e-mail: [email protected]
Gestione degli oggetti: ls()
Il comando ls() (o l equivalente objects()) fornisce una
lista di oggetti
presenti nel workspace
> x <- 2
> ls()
[1] "x" "y"
> z <- 5
> ls()
[1] "x" "y" "z"
D. Fioredistella IEZZI
e-mail: [email protected]
Gestione degli oggetti: ls()
Come è organizzata la memoria della sessione di
lavoro e che fa in modo che R riesce a
ricordare il contenuto dell oggetto denominato
a? In effetti il contenuto della memoria
(temporanea) della sessione corrente di R,
cominciata nel momento in cui è apparsa la
console, può essere visualizzato attraverso il
comando ls()
D. Fioredistella IEZZI
e-mail: [email protected]
Gestione degli oggetti: ls()
È possibile anche cancellare rimuovere dalla memoria
oggetti indesiderati (magari perché occupano troppo
spazio in memoria) con il comando rm(...). La sintassi
della funzione rm(...) prevede come argomento o il
singolo nome dell oggetto oppure una sequenza di
nomi separati da una virgola oppure ancora un vettore
(di modo character ) contenente la lista degli oggetti
da rimuovere. Tali oggetti saranno memorizzati nella
directory di lavoro corrente laddove si decidesse di
uscire dalla sessione di lavoro con il comando q()
rispondendo affermativamente alla richiesta di
salvataggio dell area (memoria) di lavoro.
D. Fioredistella IEZZI
e-mail: [email protected]
Come facciamo a sapere qual è la directory di
lavoro corrente e come possiamo eventualmente
modificarla?
I due comandi che svolgono tali compiti sono getwd() e
setwd(...). Quest ultimo richiede come argomento una
stringa contenente tutto il percorso desiderato con il
particolare accorgimento che il percorso anziché i
simboli backslash \ usualmente impiegati nei sistemi
Windows richiede l uso dei simboli slash / tipicamente
adottato nei sistemi Unix-Linux-like. Alternativamente
si può sostituire il backslash \ con un doppio
backslash \\. Come esempio visualizziamo i comandi
della seguente sessione.
D. Fioredistella IEZZI
e-mail: [email protected]
Sistema di aiuto in linea
help(nome esatto del comando) o
?<nome esatto del comando>
apre una pagina del manuale relativa al comando
help.search("stringa") ricerca informazioni sull argomento
nel
sistema di help restituisce una lista di comandi collegati
alla stringa
cercata.
> help(rm)
> help(rm)
> ?rm
> help(rm)
D. Fioredistella IEZZI
e-mail: [email protected]
Contenuto di una pagina del
manuale
q Description: descrizione generale
q Usage: sintassi
q Arguments: dettaglio sugli argomenti del
comando
q Details: dettagli tecnici
q Value: risultato dell esecuzione
q References: eventuali riferimenti bibliografici
q See Also: comandi collegati
q Examples: istruzioni eseguibili
D. Fioredistella IEZZI
e-mail: [email protected]
Gestione dei file: salvataggio e
lettura
•  Salvataggio
degli oggetti in R, ossia del file .Rdata: dal menù File scegliere
Salva area di lavoro
della cronologia, ossia del file .Rhistory: dal menù File
scegliere
Salva cronologia
•  Lettura
degli oggetti in R, ossia del file .Rdata: dal menù File scegliere
Carica area di lavoro
della cronologia, ossia del file .Rhistory: dal menù File
scegliere
Carica cronologia
oppure doppio clic sull icona .Rdata relativa alla WD salvata. In
questo modo si apre una sessione di R in cui risultano caricati sia gli
oggetti, sia la cronologia.
D. Fioredistella IEZZI
e-mail: [email protected]
Tipi di oggetti
Un oggetto in R può essere di tipo
q vector
q matrix (array)
q list
q factor
q data.frame
q function
D. Fioredistella IEZZI
e-mail: [email protected]
Vettori: assegnazione
Un vettore si assegna col comando
> x <- c(31,1,7,3)
> x
[1] 31 1 7 3
l oggetto x è ora un vettore
> is.vector(x)
[1] TRUE
D. Fioredistella IEZZI
e-mail: [email protected]
Funzioni su un vettore
R dispone di varie funzioni il cui argomento è
un vettore
>x<-c(31,1,7,3)
> min(x)
> mean(x)
[1] 1
[1] 10.5
> sum(x)
[1] 42
> range(x)
[1] 1 31
> length(x)
[1] 4
D. Fioredistella IEZZI
e-mail: [email protected]
Assegnazione del valore di una
funzione
Il risultato di una funzione può anche essere
memorizzato in un altro oggetto
> sommax <- sum(x)
> sommax
[1] 42
Di che tipo sia l oggetto che si crea dipende dal value
che la funzione restituisce
> rangex <- range(x)
> rangex
[1] 1 31
D. Fioredistella IEZZI
e-mail: [email protected]
Operazioni aritmetiche sui vettori
Una normale operazione binaria (+,-,*,/,ˆ) avente per
argomenti due vettori viene eseguita elemento per
elemento, sicché
> x
[1] 31 1 7 3
> y
[1] 3 4 6 8
> x+y
[1] 34 5 13 11
D. Fioredistella IEZZI
e-mail: [email protected]
Operazioni logiche sui vettori
La stessa regola che vale per le operazioni
aritmetiche vale per le operazioni logiche:
> x
[1] 31 1 7 3
> y
[1] 3 4 6 8
> x>y
[1] TRUE FALSE TRUE FALSE
D. Fioredistella IEZZI
e-mail: [email protected]
Vettori di diversa lunghezza
Se un operazione viene eseguita tra vettori di
lunghezza diversa il vettore più corto viene
ripetuto tante volte quante è necessario per
eguagliare la lunghezza del vettore più lungo
> x
[1] 1 8
> y
[1] 3 5 1 9
> x+y
[1] 4 13 2 17
D. Fioredistella IEZZI
e-mail: [email protected]
Vettori di diversa lunghezza
Questo comportamento può essere molto utile, ad esempio
consente di moltiplicare un vettore per uno scalare in
maniera immediata
> y
[1] 3 5 1 9
> x
[1] 2
> y
[1] 3 5 1 9
> y/x
[1] 1.5 2.5 0.5 4.5
D. Fioredistella IEZZI
e-mail: [email protected]
Vettori di diversa lunghezza
Un messaggio di avviso viene dato solo se la lunghezza
del vettore lungo non è multipla di quella del vettore
corto
> x
[1] 1 8 2
> y
[1] 3 5 1 9
> x*y
[1] 3 40 2 9
Warning message: longer object length is not a multiple
of
shorter object length in: y + x
D. Fioredistella IEZZI
e-mail: [email protected]
Estrazione di elementi da un
vettore
Per estrarre un sottovettore da un vettore facciamo
seguire al nome del vettore la parte da estrarre (la
posizione dell elemento da estrarre) racchiusa tra
parentesi quadre, vi sono diversi modi per farlo, il
primo e più intuitivo è
> y
[1] 3 5 1 9
> y[1]
[1] 3
> y[c(1,3)]
[1] 3 1
D. Fioredistella IEZZI
e-mail: [email protected]
Estrazione di elementi da un
vettore
In modo complementare al metodo precedente possiamo
indicare, anziché gli elementi da estrarre, quelli da
ignorare, indicandoli con indici
negativi
> y <- c(3, 5, 1, 9)
> y[1]
[1] 3
> y[-c(2,4)]
[1] 3 1
D. Fioredistella IEZZI
e-mail: [email protected]
Estrazione di elementi da un
vettore
Un altro metodo consiste nell indicare, sempre
tra parentesi, quali elementi conservare e
quali tralasciare mediante un vettore di
lunghezza pari al vettore di partenza con il
valore TRUE in corrispondenza agli elementi da
considerare e FALSE in corrispondenza agli
elementi da ignorare
> y <- c(3, 5, 1, 9)
> y[c(T,F,T,F)]
[1] 3 1
D. Fioredistella IEZZI
e-mail: [email protected]
Estrazione di elementi da un
vettore
Il metodo appena indicato è utile in particolare
quando si vuole determinare quali elementi
estrarre in base ad una condizione
> y <- c(3, 5, 1, 9)
> y[y<4]
[1] 3 1
condizione che può coinvolgere un secondo
vettore
> x <- c(1, 0, 1, 0)
> y[x==1]
[1] 3 1
D. Fioredistella IEZZI
e-mail: [email protected]
Estrazione di elementi da un
vettore
Vogliamo costruire un vettore che contiene il
primo e il terzo elemento di
> y <- c(3, 5, 1, 9)
disponiamo di tre metodi
x <- y[c(1,3)]
x <- y[c(T,F,T,F)]
x <- y[-c(2,4)]
Il risultato, lo stesso, è
> x
[1] 3 1
D. Fioredistella IEZZI
e-mail: [email protected]
Alcuni particolari vettori
x
x
x
x
<<<<-
seq(from=1,to=5,by=1)
1:5
seq(from=1,to=5,length=5)
rep(1:5,n=5)
D. Fioredistella IEZZI
e-mail: [email protected]
Indicatori di categoria o
fattori
Supponiamo di effettuare un esperimento su 6 soggetti, 2 dei quali
ricevono il trattamento a , 3 quello b e 1 quello c . Questa
informazione può essere salvata nel seguente modo:
> trattamento<-factor (c('a', 'b', 'b', 'c', 'a', 'b'))
> trattamento
[1] a b b c a b
Levels: a b c
Supponiamo che gli esiti dell esperimento sui 6 individui siano i
seguenti:
risposta<-c(10,3, 7, 6, 4, 5)
Allora possiamo trovare gli esiti di un particolare trattamento con
il comando
> risposta[trattamento=="a"]
[1] 10 4
> risposta[trattamento=="b"]
[1] 3 7 5
D. Fioredistella IEZZI
e-mail: [email protected]