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]