SlideShare a Scribd company logo
1 of 77
Download to read offline
LINGUAGGIO RLINGUAGGIO R
PRINCIPI E CONCETTIPRINCIPI E CONCETTI
Vincenzo De Maio
Matricola 0510200251
Corso di Calcolo delle probabilità e statistica matematica
Prof. Aniello Fedullo
Cos'è R?Cos'è R?
● R è un ambiente e un linguaggio di
programmazione volto alla risoluzione di
problemi di statistica. E' totalmente open-source e
distribuito sotto licenza GNU/GPL 2.0 .
● Deriva dal linguaggio S, un progetto GNU molto
simile, e possiamo vederlo come una differente
implementazione di S
● Sito del progetto R: www.r-project.org
ARGOMENTI DELLA LEZIONEARGOMENTI DELLA LEZIONE
● Elementi basilari di R
● Gli Oggetti di R
● Strutture di controllo
● Costrutti iterativi
● Creazione di proprie funzioni
Elementi basilari di R: sintassiElementi basilari di R: sintassi
● R è case-sensitive (A != a)
● I comandi sono separati da ';' o dal carattere di
newline
● Se alla fine della linea un comando inserito è
incompleto, viene dimostrato il simbolo '+' che
indica di aggiungere ciò che manca.
Elementi basilari di R:Elementi basilari di R:
commenticommenti
● In R, tutto ciò che segue il carattere '#', viene
considerato un commento e ignorato
● NON È CONSENTITO IL COMMENTO SU
PIÙ RIGHE
Elementi basilari di R: help()Elementi basilari di R: help()
● Utilizzo: help(“nomefunzione”) o
help(“operatore”)
(oppure ?nomefunzione o ?operatore)
● E' possibile effettuare una ricerca nell'help tramite
help.search(“pattern”), dove pattern è ciò che
intendiamo cercare.
● Per una delucidazione generale riguardo R,
digitare help.start().
Elementi basilari di R:Elementi basilari di R:
manipolazione degli oggettimanipolazione degli oggetti
● Con il comando objects() ( o ls() ) è possibile
visualizzare i nomi degli oggetti che esistono
nell'ambiente R
● Per la rimozione di un oggetto, basta utilizzare
rm(nomeoggetto)
● Per la rimozione di tutti gli oggetti, rm( list = ls()
)
CoercizioneCoercizione
● Sugli oggetti di R viene effettuata solitamente la
COERCIZIONE, ovvero i valori vengono
“costretti” ad assumere il tipo richiesto dalla
computazione.
● E' possibile effettuare una coercizione esplicita
tramite opportune funzioni (es.
as.character(oggetto) , as.name(oggetto) etc)
Utilizzo di librerieUtilizzo di librerie
● R mette a disposizione degli utenti un vasto
numero di librerie; per poterle utilizzare, bisogna
digitare il comando library(nomelibreria)
● Talvolta, per evitare di dover ridigitare tale
comando, può essere utile aggiungere delle
istruzioni library() all'interno del file Rprofile...
Rprofile, questo sconosciuto...Rprofile, questo sconosciuto...
● Rprofile è uno dei primi file che R legge
appena inizia la sua esecuzione (come
.bashrc nella bash shell)
● E' posizionato nel percorso
HOME/library/base, dove HOME è la
cartella in cui R è installato.
● IDEA! se ci sono dei comandi che
utilizziamo ad ogni avvio di R, forse
possiamo inserirli nel file Rprofile per
evitarne il re-inserimento...
Elementi basilari di R: q()Elementi basilari di R: q()
● la chiamata di q() causa l'uscita dall'ambiente R
● All'uscita, R chiederà all'utente se intende salvare
l'immagine del workspace, ovvero se gli oggetti
che abbiamo or ora utilizzato dovranno essere
disponibili alla successiva esecuzione di R.
ARGOMENTI DELLA LEZIONEARGOMENTI DELLA LEZIONE
● Elementi basilari di R
● Gli Oggetti di R
● Strutture di controllo
● Programmazione orientata agli oggetti in R
● R e la statistica
Oggetti?Oggetti?
● R è un linguaggio orientato agli oggetti.
● Ogni oggetto di R possiede un certo numero di
attributi, eredita una o più classi...
● Per accedere a un qualsiasi attributo, la sintassi è
nomeattributo(oggetto).
Gli oggetti di RGli oggetti di R
● Vettori e aritmetica
● Array e matrici
● Liste
● Fattori
● Data frames
● Altri tipi di R
VettoriVettori
● Alla base della computazione di R c'è l'oggetto
Vettore.
● R mette a disposizione dell'utente 6 tipi atomici di
vettori: logical, integer, double, complex,
character, raw.
Inizializzazione di vettoriInizializzazione di vettori
● x <- c( elem1, elem2, elem3, elem4 );
● Questa istruzione assegna a x un vettore contenente gli
elementi elem1 elem2 elem3 elem4 (c è una funzione che
restituisce in output il vettore degli elementi passati in
input)
● assign(“x”, c(elem1,elem2,elem3,elem4));
● Questa istruzione assegna a x un vettore contenente gli
elementi elem1 elem2 elem3 elem4
I vettori e l'aritmeticaI vettori e l'aritmetica
● I vettori possono essere utilizzati in operazioni
aritmetiche, effettuando le operazioni elemento
per elemento.
● E' possibile operare con vettori di lunghezza
diversa
● Per accedere all'i-esimo elemento di un vettore, si
utilizza l'espressione x[i] (dove i può essere anche
un vettore)
Esempio 1.2 (1)Esempio 1.2 (1)
> #vediamo il contenuto di x
[1] 2 3 5 7
>#vediamo il contenuto di y
[1] 4 2
> z <- 2*x+1 #assegniamo al vettore z il risultato
di questa operazione
> z # ora vediamo il contenuto di z
[1] 9 9 15 17
Esempio 1.2 (2)Esempio 1.2 (2)
● Infatti...
● 2 * x = 4 6 10 14 (2*2, 2*3, 2*10, 2*7)
● 2*x + y = 8 8 14 16 (4 + 4, 6 + 2, 10 + 4, 14 + 2) (N.B. il
vettore y è stato considerato 2 volte, per raggiungere la
dimensione del vettore x di lunghezza maggiore)
● 2*x + y + 1 = 9 9 15 17 (8 + 1, 8 + 1, 14+1, 16+1)
Se le dimensioni dei vettori non sono multipli l'uno dell'altro,
si prendono i primi n elementi del vettore più piccolo, dove n =
dimensione di A – dimensione di B (con dimensione di B <
dimensione di A); l'operazione viene eseguita ma viene
stampato un warning.
Operatori e funzioniOperatori e funzioni
aritmetichearitmetiche
● ... e una notevole varietà di funzioni simpatiche
● log(), exp(), sin(), cos(), tan(), sqrt(), min(), max() (vecchie
conoscenze di analisi matematica)
● R ha a disposizione alcuni operatori elementari...
● +, -, *, /, ^ (rispettivamente addizione, sottrazione,
moltiplicazione, divisione e elevamento a potenza)
Altre funzioni di uso comuneAltre funzioni di uso comune
(1)(1)
● range(vettore) - restituisce un vettore contenente
il minimo e il massimo elemento del vettore
● pmax(x,y), pmin(x,y) – restituiscono un vettore
contenente all'indice i il massimo (o il minimo)
dell'i-esimo elemento dei vettori passati come
parametro
● length(x) - restituisce la lunghezza del vettore x
● mean(x) – media aritmetica degli elementi di x
● var(x) – varianza campionaria degli elementi di x
(se x è una matrice, viene restituita la matrice di
varianza e covarianza)
Altre funzioni di uso comuneAltre funzioni di uso comune
(2)(2)
● which.funzione(x) – restituisce gli indici
dell'array per cui funzione(x) è true
R e i numeri complessiR e i numeri complessi
● In R è possibile effettuare operazioni con i
numeri complessi, ma la parte immaginaria deve
essere esplicitata.
● infatti, sqrt(-17) da errore, mentre sqrt(-17 + 0i) viene
correttamente valutato e darà come risultato un valore
complesso.
Generazione di sequenzeGenerazione di sequenze
● Operatore ':' - con questo operatore possiamo
generare un vettore contenente i valori compresi
tra il valore di destra e quello di sinistra
● esempio – 1:10 restituisce il vettore degli elementi
compresi tra 1 e 10.
● Funzione seq() - seq è il modo più “potente” di
generare sequenze in R
Funzione seq()Funzione seq()
● seq prende 5 parametri, di cui gli ultimi 3
opzionali: per comodità li chiameremo from, to,
by, length e along
● from: il valore numerico da cui la sequenza deve iniziare
● to: il massimo valore numerico della sequenza
● by: il passo che separa ciascun elemento
● length: la lunghezza della sequenza
● along (se specificato, deve essere l'unico parametro):
genera la successione degli elementi che vanno da 1 a
length(along).
Esempio 1.3Esempio 1.3
● Utilizzo di seq con vari argomenti
> seq(1,7) #genera il vettore di elementi da 1 a 7
[1] 1 2 3 4 5 6 7
> seq(1,7,0.5) #genera il vettore di elementi da 1 a 7
usando come passo 0.5
[1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0
>x <- 5 10 2 1 #riempiamo il vettore x a caso...
> seq(x) #genera il vettore di elementi da 1 a 4,
essendo x un vettore di 4 elementi.
Gli oggetti di RGli oggetti di R
● Vettori e aritmetica
● Array e matrici
● Liste
● Fattori
● Data frames
● Altri tipi di R
Array e matriciArray e matrici
● Mentre in C array e vettori sono la stessa cosa, in
R un array è un vettore che associa più indici allo
stesso elemento
● Una matrice è un particolare array con 2 indici
(ma potremmo avere anche array con n indici)
● per l'accesso agli elementi di array e matrici si
utilizza la stessa espressione utilizzata per i
vettori
Inizializzazione di array eInizializzazione di array e
matricimatrici
● Possiamo ottenere un array (o una matrice) in 2
modi
● modificando l'attributo dim di un vettore preesistente
● utilizzando la funzione array() (per le matrici esiste
l'apposita funzione matrix() )
Modifica dell'attributo dimModifica dell'attributo dim
● IMPORTANTE! il prodotto degli elementi del
vettore assegnato deve essere pari alla lunghezza
del vettore
● La modifica di questo attributo del vettore si
effettua con la chiamata dim(vettore)
● La sintassi è la seguente
● dim(vettore) <- c(3,2)
Esempio 1.4Esempio 1.4
● Esempio di inizializzazione di array tramite
modifica di dim(vettore)
Utilizzo di array() e matrix()Utilizzo di array() e matrix()
● array(vettore dati, vettore dimensioni)
● matrix(vettore dati, numero_righe,
numero_colonne)
Operazioni tra arrayOperazioni tra array
● È possibile effettuare operazioni tra array
esattamente come per i vettori, tenendo conto
delle seguenti regole in caso di array di
dimensioni differenti
● Le espressioni sono valutate da sinistra a destra
● i vettori corti sono estesi ripetendo i loro valori finchè non
si ha corrispondenza dimensionale tra gli operandi
coinvolti
● qualsiasi operando vettore più lungo di matrice o array
genera un errore
● gli array devono avere lo stesso valore di dim o si ha un
errore
● Se non c'è errore, l'array risultante ha lo stesso dim degli
array coinvolti nella computazione (se sono presenti array)
Operatori speciali per matriciOperatori speciali per matrici
● Siano A, B 2 matrici nxn
● A*B esegue il prodotto elemento per elemento (A[1,1] *
B[1,1], ... , A[n,n] * B[n,n].
● A%*%B esegue il prodotto riga per colonna di AxB, se A e
B sono compatibili (ovvero, numero di righe di A = numero
di colonne di B e viceversa)
Alcune funzioni per le matriciAlcune funzioni per le matrici
(1)(1)
● t(matrice) – restituisce la trasposta della matrice
● nrow(matrice),ncol(matrice) – restituiscono
rispettivamente il numero di righe e di colonne
della matrice
● crossprod(a,b) – Questa chiamata è equivalente a
t(a) %*% b. Se il secondo argomento viene
omesso, la chiamata è uguale a t(a) %*% a.
Alcune funzioni per le matriciAlcune funzioni per le matrici
(2)(2)
● det(matrice) – restituisce il determinante della
matrice
● solve(matrice) – restituisce l'inversa della matrice
se questa è non singolare
● diag(x)
● se x è un vettore, restituisce una matrice con x come
diagonale
● se x è una matrice, restituisce il vettore contenente la
diagonale di x
● se x è un intero, viene restituita la matrice di identità con x
righe e x colonne.
Alcune funzioni per le matriciAlcune funzioni per le matrici
(3)(3)
● eigen(matrice) – restituisce una LISTA (ne
parleremo in seguito) contenente gli autovalori e
gli autovettori della matrice
Gli oggetti di RGli oggetti di R
● Vettori e aritmetica
● Array e matrici
● Liste
● Fattori
● Data frames
● Altri tipi di R
ListeListe
● In R una lista può essere vista come un “vettore
generico”, ovvero come un vettore che può
contenere al suo interno vettori di diverso tipo e
lunghezza.
● La definizione di una lista avviene attraverso il
comando list().
● Gli elementi di una lista hanno sia un indice che
una chiave.
Esempio 1.5Esempio 1.5
● Creazione di una lista con chiavi (per averne una
senza chiavi, basta omettere il nome di chiave)
Accesso a una listaAccesso a una lista
● x[[i]] – accede all'i-esimo elemento della lista
● x$chiave – accede all'elemento con chiave
'chiave'.
● al posto della chiave, è possibile utilizzare
un'abbreviazione, purchè sia univoca.
● Se la lista contiene un vettore, è possibile
accederci come un normale vettore
Esempio 1.6Esempio 1.6
● Vari metodi di accesso a liste
Gli oggetti di RGli oggetti di R
● Vettori e aritmetica
● Array e matrici
● Liste
● Fattori
● Data frames
● Altri tipi di R
FattoriFattori
● Un fattore è un oggetto vettore che fornisce una
classificazione discreta delle componenti di altri
vettori della stessa lunghezza.Possono essere
ordinati o non ordinati.
● Un fattore ordinato può essere visto come una
variabile qualitativa ordinabile
● Un fattore non ordinato può essere visto come
una variabile qualitativa sconnessa
● L'attributo levels indica i livelli di fattorizzazione
● Non si capisce niente, meglio fare un esempio...
Esempio 1.7 (1)Esempio 1.7 (1)
● Supponiamo di avere un'azienda con 5 impiegati
che risiedono in province diverse; creiamo un
vettore con le province di residenza
province <- c(“CE”,”NA”,”AV”,”CE”,”NA”)
Ora creiamone il fattore...
Esempio 1.7 (2)Esempio 1.7 (2)
● Creazione del fattore
Esempio 1.7 (3)Esempio 1.7 (3)
● Ora supponiamo di voler calcolare il reddito
medio annuale per provincia; creiamo un altro
vettore contenente il reddito annuale per ogni
impiegato, ponendo nell'i-esimo elemento del
vettore redditi il reddito dell'i-esimo impiegato
del vettore provincia
Esempio 1.7 (4)Esempio 1.7 (4)
● È possibile a questo punto effettuare una
chiamata di funzione in base al fattore, tramite
tapply(); Nel caso specifico, la funzione che ci
interessa è mean(), per la media aritmetica degli
stipendi
● Prototipo: tapply(vettore, fattore, funzione)
Esempio 1.7 (5)Esempio 1.7 (5)
● Vediamo ora la media dei redditi per provincia
In sintesi...In sintesi...
● Abbiamo effettuato il calcolo della media per
provincia senza utilizzare alcun costrutto iterativo
e senza ricorrere a strutture particolarmente
complesse!
Gli oggetti di RGli oggetti di R
● Vettori e aritmetica
● Array e matrici
● Liste
● Fattori
● Data frames
● Altri tipi di R
Data FramesData Frames
● Un Data frame è una lista di classe data frame,
ovvero una lista su cui sono poste delle
restrizioni. Viene rappresentato come una matrice
i cui elementi possono essere di vario tipo, ma di
uguale lunghezza.
Vincoli sui data frame (1)Vincoli sui data frame (1)
● Un data frame può contenere SOLO
● Vettori (logici, di caratteri o numerici)
● Matrici numeriche
● Fattori
● Liste
● altri data frame
● Le variabili possedute da matrici e liste diventano
parte del data frame.
● I vettori di caratteri sono “costretti” a fattori, i cui
livelli sono i caratteri del vettore presi una sola
volta.
Creazione di un data frameCreazione di un data frame
● dataframe = data.frame(elemento1=par1,
elemento2=par2)
● Se una lista rispetta le restrizioni di un data frame, può
essere costretta a essere un data frame dichiarandone
esplicitamente la coercizione tramite la funzione
as.data.frame(lista)
Altri Tipi di RAltri Tipi di R
●NULL
●char
●logical
●integer
●double
●complex
●character
●...
●any
●expression
●list
●closure
●promise
●language
●weakref
●raw
Gli oggetti di RGli oggetti di R
● Vettori e aritmetica
● Array e matrici
● Liste
● Fattori
● Data frames
● Altri tipi di R
ARGOMENTI DELLA LEZIONEARGOMENTI DELLA LEZIONE
● Elementi basilari di R
● Gli Oggetti di R
● Strutture di controllo
● Costrutti iterativi
● Creazione di nuove funzioni
Strutture di controllo:if-elseStrutture di controllo:if-else
● Come tutti i linguaggi di programmazione, R
mette a disposizione delle strutture di controllo
● If-else è una nostra vecchia conoscenza...
● sintassi:
● if(condizione)
● Istruzione1
● Else
● istruzione2
Esempio 2.1Esempio 2.1
● Utilizzo di if-else
Un ripasso su if-elseUn ripasso su if-else
● E' possibile porre in cascata gli if-else, come in
tutti i linguaggi di programmazione
if(condizione_1)
Istruzione_1
Else if(condizione_2)
istruzione_2
....
else if(condizione_n-1)
istruzione_n-1
else
istruzione_n
ARGOMENTI DELLA LEZIONEARGOMENTI DELLA LEZIONE
● Elementi basilari di R
● Gli Oggetti di R
● Strutture di controllo
● Costrutti iterativi
● Creazione di nuove funzioni
Ciclo REPEATCiclo REPEAT
● L'istruzione repeat viene utilizzata per ripetere la
valutazione del blocco di istuzioni che segue
finchè non viene esplicitamente bloccata
● Se ne sconsiglia solitamente l'uso, in quanto c'è il
pericolo che si verifichi un loop infinito
● Sintassi:
repeat { istruzione_1 ... istruzione_n }
Esempio 3.1Esempio 3.1
● Utilizzo di repeat
Ciclo WHILECiclo WHILE
● Il ciclo while può essere visto come un repeat in
cui “forziamo” il controllo della condizione di
uscita...
● Sintassi:
while(condizione){
istruzione_1;
...
istruzione_n;
}
il ciclo continua l'esecuzione finchè condizione è vera.
Esempio 3.2Esempio 3.2
● Utilizzo del ciclo while
Ciclo FORCiclo FOR
● Il ciclo FOR è lievemente diverso da quello che
conosciamo...
● Invece di incrementare un contatore, “scorre” un
vettore o una lista. (per chi conosce PHP, è simile
a foreach).
● Sintassi:
for (elem in vector){
istruzione_1;
...
istruzione_n;
}
Oddio, cos'è? Non capiscoOddio, cos'è? Non capisco
niente!niente!
● Calma...
● All'i-esima iterazione, alla variabile elem viene
assegnato l'i-esimo elemento del vettore (o lista)
vector.
● L'esecuzione del ciclo termina quando abbiamo
analizzato tutti gli elementi del vettore.
Hmm, forse ci siamo...Hmm, forse ci siamo...
● Il ciclo for di cui disponiamo in R può quindi
essere utilizzato sia normalmente...
● Ad esempio, se vogliamo effettuare 10 iterazioni,
semplicemente facciamo in modo che vector sia un vettore
(o lista) di 10 elementi...
● Sia per facilitare lo scorrimento di vettori o liste
● Dato che a elem viene sempre assegnato l'i-esimo
elemento del vettore o lista, basta effettuare su di lui le
operazioni che ci servono
WOW! FACCIAMO UN ESEMPIO??
Esempio 3.3Esempio 3.3
● Utilizzo “semplice” del ciclo for
Esempio 3.4Esempio 3.4
● Utilizzo “nuovo” del ciclo for
Istruzione BREAKIstruzione BREAK
● L'istruzione break in R ha lo stesso ruolo che ha
nel linguaggio C...
● Causa l'interruzione immediata del ciclo in cui viene
eseguita
● L'esecuzione del programma riprende dalla fine di quel
ciclo
Istruzione NEXTIstruzione NEXT
● L'istruzione next ha la stessa funzione del
continue in C
● Termina l'esecuzione della corrente iterazione, riportando il
controllo all'inizio del ciclo in cui viene utilizzata.
● L'esecuzione del programma riprende dalla prossima
iterazione del ciclo.
ARGOMENTI DELLA LEZIONEARGOMENTI DELLA LEZIONE
● Elementi basilari di R
● Gli Oggetti di R
● Strutture di controllo
● Costrutti iterativi
● Creazione di nuove funzioni
Creazione di nuove funzioniCreazione di nuove funzioni
● Possiamo ovviamente definire nuove funzioni
oltre a quelle preesistenti
● Come? utilizzando la direttiva function.
function()function()
● La funzione function() crea un oggetto funzione;
il suo utilizzo è molto semplice
● Sintassi
nomefunzione <- function(parametro_1,...,parametro_n){
istruzione_1;
...
istruzione_n;
}
● Per richiamare la funzione appena creata...
● nomefunzione(parametri)
BibliografiaBibliografia
● Per la realizzazione di queste slides sono stati
usati solo i documenti ufficiali di R, reperibili al
sito www.r-project.org (sezione documentation).
E adesso...E adesso...
STUDIATE!!!

More Related Content

Viewers also liked

Scheduling power-aware abstract
Scheduling power-aware abstractScheduling power-aware abstract
Scheduling power-aware abstract
Vincenzo De Maio
 
Introduzione a R
Introduzione a RIntroduzione a R
Introduzione a R
MCalderisi
 
Introduction to R by David Lucy Cap 12-16
Introduction to R by David Lucy Cap 12-16Introduction to R by David Lucy Cap 12-16
Introduction to R by David Lucy Cap 12-16
Luis Pons
 
Ejercicios resueltos en r
Ejercicios resueltos en rEjercicios resueltos en r
Ejercicios resueltos en r
zasque11
 

Viewers also liked (18)

Elisa Teodoro, Clase 5, Funciones
Elisa Teodoro, Clase 5, FuncionesElisa Teodoro, Clase 5, Funciones
Elisa Teodoro, Clase 5, Funciones
 
Scheduling power-aware abstract
Scheduling power-aware abstractScheduling power-aware abstract
Scheduling power-aware abstract
 
Introduzione a R
Introduzione a RIntroduzione a R
Introduzione a R
 
Elisa Teodoro, Aplicacion de Derivadas, Clase 2
Elisa Teodoro, Aplicacion de Derivadas, Clase 2Elisa Teodoro, Aplicacion de Derivadas, Clase 2
Elisa Teodoro, Aplicacion de Derivadas, Clase 2
 
Programacion en R
Programacion en RProgramacion en R
Programacion en R
 
Abstract tesi
Abstract tesiAbstract tesi
Abstract tesi
 
Introduction to R by David Lucy Cap 12-16
Introduction to R by David Lucy Cap 12-16Introduction to R by David Lucy Cap 12-16
Introduction to R by David Lucy Cap 12-16
 
ECUACIONES DIFERENCIALES CON DERIVE
ECUACIONES DIFERENCIALES CON DERIVEECUACIONES DIFERENCIALES CON DERIVE
ECUACIONES DIFERENCIALES CON DERIVE
 
9 introduzione r
9   introduzione r9   introduzione r
9 introduzione r
 
Ejercicios resueltos en r
Ejercicios resueltos en rEjercicios resueltos en r
Ejercicios resueltos en r
 
An introduction to structural equation models in R using the Lavaan package
An introduction to structural equation models in R using the Lavaan packageAn introduction to structural equation models in R using the Lavaan package
An introduction to structural equation models in R using the Lavaan package
 
Apuntes de prácticas de DERIVE
Apuntes de prácticas de DERIVEApuntes de prácticas de DERIVE
Apuntes de prácticas de DERIVE
 
LENGUAJE DE PROGRAMACION R
LENGUAJE DE PROGRAMACION RLENGUAJE DE PROGRAMACION R
LENGUAJE DE PROGRAMACION R
 
PhD midterm report
PhD midterm reportPhD midterm report
PhD midterm report
 
R Vectors
R VectorsR Vectors
R Vectors
 
R Graphics
R GraphicsR Graphics
R Graphics
 
Linguagem R
Linguagem RLinguagem R
Linguagem R
 
Presentation R
Presentation RPresentation R
Presentation R
 

Similar to Linguaggio R, principi e concetti

Lezione 16 (2 aprile 2012)
Lezione 16 (2 aprile 2012)Lezione 16 (2 aprile 2012)
Lezione 16 (2 aprile 2012)
STELITANO
 
06 1 array_stringhe_typedef
06 1 array_stringhe_typedef06 1 array_stringhe_typedef
06 1 array_stringhe_typedef
Piero Fraternali
 
Introduzione a Matlab
Introduzione a MatlabIntroduzione a Matlab
Introduzione a Matlab
Marco Suma
 
10 - Programmazione: Tipi di dato strutturati
10 - Programmazione: Tipi di dato strutturati10 - Programmazione: Tipi di dato strutturati
10 - Programmazione: Tipi di dato strutturati
Majong DevJfu
 
6 Vettori E Matrici
6   Vettori E Matrici6   Vettori E Matrici
6 Vettori E Matrici
guest60e9511
 
13 Puntatori E Memoria Dinamica
13   Puntatori E Memoria Dinamica13   Puntatori E Memoria Dinamica
13 Puntatori E Memoria Dinamica
guest60e9511
 
Ecdl modulo 1 -Fondamenti
Ecdl modulo 1 -FondamentiEcdl modulo 1 -Fondamenti
Ecdl modulo 1 -Fondamenti
Angela Cristina
 

Similar to Linguaggio R, principi e concetti (20)

Lezione 16 (2 aprile 2012)
Lezione 16 (2 aprile 2012)Lezione 16 (2 aprile 2012)
Lezione 16 (2 aprile 2012)
 
06 1 array_stringhe_typedef
06 1 array_stringhe_typedef06 1 array_stringhe_typedef
06 1 array_stringhe_typedef
 
Introduzione a JavaScript
Introduzione a JavaScriptIntroduzione a JavaScript
Introduzione a JavaScript
 
Riepilogo Java C/C++
Riepilogo Java C/C++Riepilogo Java C/C++
Riepilogo Java C/C++
 
Introduzione a Matlab
Introduzione a MatlabIntroduzione a Matlab
Introduzione a Matlab
 
Puntatori in C++
Puntatori in C++Puntatori in C++
Puntatori in C++
 
Java Lezione 1
Java Lezione 1Java Lezione 1
Java Lezione 1
 
Data mining 04-funzionicustom-classioggetti
Data mining 04-funzionicustom-classioggettiData mining 04-funzionicustom-classioggetti
Data mining 04-funzionicustom-classioggetti
 
Strutture dati 04-funzionicustom-classioggetti
Strutture dati 04-funzionicustom-classioggettiStrutture dati 04-funzionicustom-classioggetti
Strutture dati 04-funzionicustom-classioggetti
 
10 - Programmazione: Tipi di dato strutturati
10 - Programmazione: Tipi di dato strutturati10 - Programmazione: Tipi di dato strutturati
10 - Programmazione: Tipi di dato strutturati
 
SQL Unità 1 linguaggio DDL; DML, funzioni di aggregazione
SQL Unità 1 linguaggio DDL; DML, funzioni di aggregazioneSQL Unità 1 linguaggio DDL; DML, funzioni di aggregazione
SQL Unità 1 linguaggio DDL; DML, funzioni di aggregazione
 
Algoritmi di ordinamento
Algoritmi di ordinamentoAlgoritmi di ordinamento
Algoritmi di ordinamento
 
Array in C++
Array in C++Array in C++
Array in C++
 
Introduzione a scala prima parte
Introduzione a scala   prima parteIntroduzione a scala   prima parte
Introduzione a scala prima parte
 
6 Vettori E Matrici
6   Vettori E Matrici6   Vettori E Matrici
6 Vettori E Matrici
 
LINQ, Entities Framework & ORMs
LINQ, Entities Framework & ORMsLINQ, Entities Framework & ORMs
LINQ, Entities Framework & ORMs
 
13 Puntatori E Memoria Dinamica
13   Puntatori E Memoria Dinamica13   Puntatori E Memoria Dinamica
13 Puntatori E Memoria Dinamica
 
primi comandi SQL con Mysql
primi comandi SQL con Mysqlprimi comandi SQL con Mysql
primi comandi SQL con Mysql
 
Ecdl modulo 1 -Fondamenti
Ecdl modulo 1 -FondamentiEcdl modulo 1 -Fondamenti
Ecdl modulo 1 -Fondamenti
 
08 mapreduce
08   mapreduce08   mapreduce
08 mapreduce
 

More from Vincenzo De Maio (7)

Energy aware networking
Energy aware networkingEnergy aware networking
Energy aware networking
 
Green scheduling
Green schedulingGreen scheduling
Green scheduling
 
Cell Programming 2
Cell Programming 2Cell Programming 2
Cell Programming 2
 
Cell Programming 1
Cell Programming 1Cell Programming 1
Cell Programming 1
 
R e la statistica
R e la statisticaR e la statistica
R e la statistica
 
Envy free makespan approximation
Envy free makespan approximationEnvy free makespan approximation
Envy free makespan approximation
 
Ambienti opensource per l'apprendimento
Ambienti opensource per l'apprendimentoAmbienti opensource per l'apprendimento
Ambienti opensource per l'apprendimento
 

Linguaggio R, principi e concetti

  • 1. LINGUAGGIO RLINGUAGGIO R PRINCIPI E CONCETTIPRINCIPI E CONCETTI Vincenzo De Maio Matricola 0510200251 Corso di Calcolo delle probabilità e statistica matematica Prof. Aniello Fedullo
  • 2. Cos'è R?Cos'è R? ● R è un ambiente e un linguaggio di programmazione volto alla risoluzione di problemi di statistica. E' totalmente open-source e distribuito sotto licenza GNU/GPL 2.0 . ● Deriva dal linguaggio S, un progetto GNU molto simile, e possiamo vederlo come una differente implementazione di S ● Sito del progetto R: www.r-project.org
  • 3. ARGOMENTI DELLA LEZIONEARGOMENTI DELLA LEZIONE ● Elementi basilari di R ● Gli Oggetti di R ● Strutture di controllo ● Costrutti iterativi ● Creazione di proprie funzioni
  • 4. Elementi basilari di R: sintassiElementi basilari di R: sintassi ● R è case-sensitive (A != a) ● I comandi sono separati da ';' o dal carattere di newline ● Se alla fine della linea un comando inserito è incompleto, viene dimostrato il simbolo '+' che indica di aggiungere ciò che manca.
  • 5. Elementi basilari di R:Elementi basilari di R: commenticommenti ● In R, tutto ciò che segue il carattere '#', viene considerato un commento e ignorato ● NON È CONSENTITO IL COMMENTO SU PIÙ RIGHE
  • 6. Elementi basilari di R: help()Elementi basilari di R: help() ● Utilizzo: help(“nomefunzione”) o help(“operatore”) (oppure ?nomefunzione o ?operatore) ● E' possibile effettuare una ricerca nell'help tramite help.search(“pattern”), dove pattern è ciò che intendiamo cercare. ● Per una delucidazione generale riguardo R, digitare help.start().
  • 7. Elementi basilari di R:Elementi basilari di R: manipolazione degli oggettimanipolazione degli oggetti ● Con il comando objects() ( o ls() ) è possibile visualizzare i nomi degli oggetti che esistono nell'ambiente R ● Per la rimozione di un oggetto, basta utilizzare rm(nomeoggetto) ● Per la rimozione di tutti gli oggetti, rm( list = ls() )
  • 8. CoercizioneCoercizione ● Sugli oggetti di R viene effettuata solitamente la COERCIZIONE, ovvero i valori vengono “costretti” ad assumere il tipo richiesto dalla computazione. ● E' possibile effettuare una coercizione esplicita tramite opportune funzioni (es. as.character(oggetto) , as.name(oggetto) etc)
  • 9. Utilizzo di librerieUtilizzo di librerie ● R mette a disposizione degli utenti un vasto numero di librerie; per poterle utilizzare, bisogna digitare il comando library(nomelibreria) ● Talvolta, per evitare di dover ridigitare tale comando, può essere utile aggiungere delle istruzioni library() all'interno del file Rprofile...
  • 10. Rprofile, questo sconosciuto...Rprofile, questo sconosciuto... ● Rprofile è uno dei primi file che R legge appena inizia la sua esecuzione (come .bashrc nella bash shell) ● E' posizionato nel percorso HOME/library/base, dove HOME è la cartella in cui R è installato. ● IDEA! se ci sono dei comandi che utilizziamo ad ogni avvio di R, forse possiamo inserirli nel file Rprofile per evitarne il re-inserimento...
  • 11. Elementi basilari di R: q()Elementi basilari di R: q() ● la chiamata di q() causa l'uscita dall'ambiente R ● All'uscita, R chiederà all'utente se intende salvare l'immagine del workspace, ovvero se gli oggetti che abbiamo or ora utilizzato dovranno essere disponibili alla successiva esecuzione di R.
  • 12. ARGOMENTI DELLA LEZIONEARGOMENTI DELLA LEZIONE ● Elementi basilari di R ● Gli Oggetti di R ● Strutture di controllo ● Programmazione orientata agli oggetti in R ● R e la statistica
  • 13. Oggetti?Oggetti? ● R è un linguaggio orientato agli oggetti. ● Ogni oggetto di R possiede un certo numero di attributi, eredita una o più classi... ● Per accedere a un qualsiasi attributo, la sintassi è nomeattributo(oggetto).
  • 14. Gli oggetti di RGli oggetti di R ● Vettori e aritmetica ● Array e matrici ● Liste ● Fattori ● Data frames ● Altri tipi di R
  • 15. VettoriVettori ● Alla base della computazione di R c'è l'oggetto Vettore. ● R mette a disposizione dell'utente 6 tipi atomici di vettori: logical, integer, double, complex, character, raw.
  • 16. Inizializzazione di vettoriInizializzazione di vettori ● x <- c( elem1, elem2, elem3, elem4 ); ● Questa istruzione assegna a x un vettore contenente gli elementi elem1 elem2 elem3 elem4 (c è una funzione che restituisce in output il vettore degli elementi passati in input) ● assign(“x”, c(elem1,elem2,elem3,elem4)); ● Questa istruzione assegna a x un vettore contenente gli elementi elem1 elem2 elem3 elem4
  • 17. I vettori e l'aritmeticaI vettori e l'aritmetica ● I vettori possono essere utilizzati in operazioni aritmetiche, effettuando le operazioni elemento per elemento. ● E' possibile operare con vettori di lunghezza diversa ● Per accedere all'i-esimo elemento di un vettore, si utilizza l'espressione x[i] (dove i può essere anche un vettore)
  • 18. Esempio 1.2 (1)Esempio 1.2 (1) > #vediamo il contenuto di x [1] 2 3 5 7 >#vediamo il contenuto di y [1] 4 2 > z <- 2*x+1 #assegniamo al vettore z il risultato di questa operazione > z # ora vediamo il contenuto di z [1] 9 9 15 17
  • 19. Esempio 1.2 (2)Esempio 1.2 (2) ● Infatti... ● 2 * x = 4 6 10 14 (2*2, 2*3, 2*10, 2*7) ● 2*x + y = 8 8 14 16 (4 + 4, 6 + 2, 10 + 4, 14 + 2) (N.B. il vettore y è stato considerato 2 volte, per raggiungere la dimensione del vettore x di lunghezza maggiore) ● 2*x + y + 1 = 9 9 15 17 (8 + 1, 8 + 1, 14+1, 16+1) Se le dimensioni dei vettori non sono multipli l'uno dell'altro, si prendono i primi n elementi del vettore più piccolo, dove n = dimensione di A – dimensione di B (con dimensione di B < dimensione di A); l'operazione viene eseguita ma viene stampato un warning.
  • 20. Operatori e funzioniOperatori e funzioni aritmetichearitmetiche ● ... e una notevole varietà di funzioni simpatiche ● log(), exp(), sin(), cos(), tan(), sqrt(), min(), max() (vecchie conoscenze di analisi matematica) ● R ha a disposizione alcuni operatori elementari... ● +, -, *, /, ^ (rispettivamente addizione, sottrazione, moltiplicazione, divisione e elevamento a potenza)
  • 21. Altre funzioni di uso comuneAltre funzioni di uso comune (1)(1) ● range(vettore) - restituisce un vettore contenente il minimo e il massimo elemento del vettore ● pmax(x,y), pmin(x,y) – restituiscono un vettore contenente all'indice i il massimo (o il minimo) dell'i-esimo elemento dei vettori passati come parametro ● length(x) - restituisce la lunghezza del vettore x ● mean(x) – media aritmetica degli elementi di x ● var(x) – varianza campionaria degli elementi di x (se x è una matrice, viene restituita la matrice di varianza e covarianza)
  • 22. Altre funzioni di uso comuneAltre funzioni di uso comune (2)(2) ● which.funzione(x) – restituisce gli indici dell'array per cui funzione(x) è true
  • 23. R e i numeri complessiR e i numeri complessi ● In R è possibile effettuare operazioni con i numeri complessi, ma la parte immaginaria deve essere esplicitata. ● infatti, sqrt(-17) da errore, mentre sqrt(-17 + 0i) viene correttamente valutato e darà come risultato un valore complesso.
  • 24. Generazione di sequenzeGenerazione di sequenze ● Operatore ':' - con questo operatore possiamo generare un vettore contenente i valori compresi tra il valore di destra e quello di sinistra ● esempio – 1:10 restituisce il vettore degli elementi compresi tra 1 e 10. ● Funzione seq() - seq è il modo più “potente” di generare sequenze in R
  • 25. Funzione seq()Funzione seq() ● seq prende 5 parametri, di cui gli ultimi 3 opzionali: per comodità li chiameremo from, to, by, length e along ● from: il valore numerico da cui la sequenza deve iniziare ● to: il massimo valore numerico della sequenza ● by: il passo che separa ciascun elemento ● length: la lunghezza della sequenza ● along (se specificato, deve essere l'unico parametro): genera la successione degli elementi che vanno da 1 a length(along).
  • 26. Esempio 1.3Esempio 1.3 ● Utilizzo di seq con vari argomenti > seq(1,7) #genera il vettore di elementi da 1 a 7 [1] 1 2 3 4 5 6 7 > seq(1,7,0.5) #genera il vettore di elementi da 1 a 7 usando come passo 0.5 [1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 >x <- 5 10 2 1 #riempiamo il vettore x a caso... > seq(x) #genera il vettore di elementi da 1 a 4, essendo x un vettore di 4 elementi.
  • 27. Gli oggetti di RGli oggetti di R ● Vettori e aritmetica ● Array e matrici ● Liste ● Fattori ● Data frames ● Altri tipi di R
  • 28. Array e matriciArray e matrici ● Mentre in C array e vettori sono la stessa cosa, in R un array è un vettore che associa più indici allo stesso elemento ● Una matrice è un particolare array con 2 indici (ma potremmo avere anche array con n indici) ● per l'accesso agli elementi di array e matrici si utilizza la stessa espressione utilizzata per i vettori
  • 29. Inizializzazione di array eInizializzazione di array e matricimatrici ● Possiamo ottenere un array (o una matrice) in 2 modi ● modificando l'attributo dim di un vettore preesistente ● utilizzando la funzione array() (per le matrici esiste l'apposita funzione matrix() )
  • 30. Modifica dell'attributo dimModifica dell'attributo dim ● IMPORTANTE! il prodotto degli elementi del vettore assegnato deve essere pari alla lunghezza del vettore ● La modifica di questo attributo del vettore si effettua con la chiamata dim(vettore) ● La sintassi è la seguente ● dim(vettore) <- c(3,2)
  • 31. Esempio 1.4Esempio 1.4 ● Esempio di inizializzazione di array tramite modifica di dim(vettore)
  • 32. Utilizzo di array() e matrix()Utilizzo di array() e matrix() ● array(vettore dati, vettore dimensioni) ● matrix(vettore dati, numero_righe, numero_colonne)
  • 33. Operazioni tra arrayOperazioni tra array ● È possibile effettuare operazioni tra array esattamente come per i vettori, tenendo conto delle seguenti regole in caso di array di dimensioni differenti ● Le espressioni sono valutate da sinistra a destra ● i vettori corti sono estesi ripetendo i loro valori finchè non si ha corrispondenza dimensionale tra gli operandi coinvolti ● qualsiasi operando vettore più lungo di matrice o array genera un errore ● gli array devono avere lo stesso valore di dim o si ha un errore ● Se non c'è errore, l'array risultante ha lo stesso dim degli array coinvolti nella computazione (se sono presenti array)
  • 34. Operatori speciali per matriciOperatori speciali per matrici ● Siano A, B 2 matrici nxn ● A*B esegue il prodotto elemento per elemento (A[1,1] * B[1,1], ... , A[n,n] * B[n,n]. ● A%*%B esegue il prodotto riga per colonna di AxB, se A e B sono compatibili (ovvero, numero di righe di A = numero di colonne di B e viceversa)
  • 35. Alcune funzioni per le matriciAlcune funzioni per le matrici (1)(1) ● t(matrice) – restituisce la trasposta della matrice ● nrow(matrice),ncol(matrice) – restituiscono rispettivamente il numero di righe e di colonne della matrice ● crossprod(a,b) – Questa chiamata è equivalente a t(a) %*% b. Se il secondo argomento viene omesso, la chiamata è uguale a t(a) %*% a.
  • 36. Alcune funzioni per le matriciAlcune funzioni per le matrici (2)(2) ● det(matrice) – restituisce il determinante della matrice ● solve(matrice) – restituisce l'inversa della matrice se questa è non singolare ● diag(x) ● se x è un vettore, restituisce una matrice con x come diagonale ● se x è una matrice, restituisce il vettore contenente la diagonale di x ● se x è un intero, viene restituita la matrice di identità con x righe e x colonne.
  • 37. Alcune funzioni per le matriciAlcune funzioni per le matrici (3)(3) ● eigen(matrice) – restituisce una LISTA (ne parleremo in seguito) contenente gli autovalori e gli autovettori della matrice
  • 38. Gli oggetti di RGli oggetti di R ● Vettori e aritmetica ● Array e matrici ● Liste ● Fattori ● Data frames ● Altri tipi di R
  • 39. ListeListe ● In R una lista può essere vista come un “vettore generico”, ovvero come un vettore che può contenere al suo interno vettori di diverso tipo e lunghezza. ● La definizione di una lista avviene attraverso il comando list(). ● Gli elementi di una lista hanno sia un indice che una chiave.
  • 40. Esempio 1.5Esempio 1.5 ● Creazione di una lista con chiavi (per averne una senza chiavi, basta omettere il nome di chiave)
  • 41. Accesso a una listaAccesso a una lista ● x[[i]] – accede all'i-esimo elemento della lista ● x$chiave – accede all'elemento con chiave 'chiave'. ● al posto della chiave, è possibile utilizzare un'abbreviazione, purchè sia univoca. ● Se la lista contiene un vettore, è possibile accederci come un normale vettore
  • 42. Esempio 1.6Esempio 1.6 ● Vari metodi di accesso a liste
  • 43. Gli oggetti di RGli oggetti di R ● Vettori e aritmetica ● Array e matrici ● Liste ● Fattori ● Data frames ● Altri tipi di R
  • 44. FattoriFattori ● Un fattore è un oggetto vettore che fornisce una classificazione discreta delle componenti di altri vettori della stessa lunghezza.Possono essere ordinati o non ordinati. ● Un fattore ordinato può essere visto come una variabile qualitativa ordinabile ● Un fattore non ordinato può essere visto come una variabile qualitativa sconnessa ● L'attributo levels indica i livelli di fattorizzazione ● Non si capisce niente, meglio fare un esempio...
  • 45. Esempio 1.7 (1)Esempio 1.7 (1) ● Supponiamo di avere un'azienda con 5 impiegati che risiedono in province diverse; creiamo un vettore con le province di residenza province <- c(“CE”,”NA”,”AV”,”CE”,”NA”) Ora creiamone il fattore...
  • 46. Esempio 1.7 (2)Esempio 1.7 (2) ● Creazione del fattore
  • 47. Esempio 1.7 (3)Esempio 1.7 (3) ● Ora supponiamo di voler calcolare il reddito medio annuale per provincia; creiamo un altro vettore contenente il reddito annuale per ogni impiegato, ponendo nell'i-esimo elemento del vettore redditi il reddito dell'i-esimo impiegato del vettore provincia
  • 48. Esempio 1.7 (4)Esempio 1.7 (4) ● È possibile a questo punto effettuare una chiamata di funzione in base al fattore, tramite tapply(); Nel caso specifico, la funzione che ci interessa è mean(), per la media aritmetica degli stipendi ● Prototipo: tapply(vettore, fattore, funzione)
  • 49. Esempio 1.7 (5)Esempio 1.7 (5) ● Vediamo ora la media dei redditi per provincia
  • 50. In sintesi...In sintesi... ● Abbiamo effettuato il calcolo della media per provincia senza utilizzare alcun costrutto iterativo e senza ricorrere a strutture particolarmente complesse!
  • 51. Gli oggetti di RGli oggetti di R ● Vettori e aritmetica ● Array e matrici ● Liste ● Fattori ● Data frames ● Altri tipi di R
  • 52. Data FramesData Frames ● Un Data frame è una lista di classe data frame, ovvero una lista su cui sono poste delle restrizioni. Viene rappresentato come una matrice i cui elementi possono essere di vario tipo, ma di uguale lunghezza.
  • 53. Vincoli sui data frame (1)Vincoli sui data frame (1) ● Un data frame può contenere SOLO ● Vettori (logici, di caratteri o numerici) ● Matrici numeriche ● Fattori ● Liste ● altri data frame ● Le variabili possedute da matrici e liste diventano parte del data frame. ● I vettori di caratteri sono “costretti” a fattori, i cui livelli sono i caratteri del vettore presi una sola volta.
  • 54. Creazione di un data frameCreazione di un data frame ● dataframe = data.frame(elemento1=par1, elemento2=par2) ● Se una lista rispetta le restrizioni di un data frame, può essere costretta a essere un data frame dichiarandone esplicitamente la coercizione tramite la funzione as.data.frame(lista)
  • 55. Altri Tipi di RAltri Tipi di R ●NULL ●char ●logical ●integer ●double ●complex ●character ●... ●any ●expression ●list ●closure ●promise ●language ●weakref ●raw
  • 56. Gli oggetti di RGli oggetti di R ● Vettori e aritmetica ● Array e matrici ● Liste ● Fattori ● Data frames ● Altri tipi di R
  • 57. ARGOMENTI DELLA LEZIONEARGOMENTI DELLA LEZIONE ● Elementi basilari di R ● Gli Oggetti di R ● Strutture di controllo ● Costrutti iterativi ● Creazione di nuove funzioni
  • 58. Strutture di controllo:if-elseStrutture di controllo:if-else ● Come tutti i linguaggi di programmazione, R mette a disposizione delle strutture di controllo ● If-else è una nostra vecchia conoscenza... ● sintassi: ● if(condizione) ● Istruzione1 ● Else ● istruzione2
  • 59. Esempio 2.1Esempio 2.1 ● Utilizzo di if-else
  • 60. Un ripasso su if-elseUn ripasso su if-else ● E' possibile porre in cascata gli if-else, come in tutti i linguaggi di programmazione if(condizione_1) Istruzione_1 Else if(condizione_2) istruzione_2 .... else if(condizione_n-1) istruzione_n-1 else istruzione_n
  • 61. ARGOMENTI DELLA LEZIONEARGOMENTI DELLA LEZIONE ● Elementi basilari di R ● Gli Oggetti di R ● Strutture di controllo ● Costrutti iterativi ● Creazione di nuove funzioni
  • 62. Ciclo REPEATCiclo REPEAT ● L'istruzione repeat viene utilizzata per ripetere la valutazione del blocco di istuzioni che segue finchè non viene esplicitamente bloccata ● Se ne sconsiglia solitamente l'uso, in quanto c'è il pericolo che si verifichi un loop infinito ● Sintassi: repeat { istruzione_1 ... istruzione_n }
  • 63. Esempio 3.1Esempio 3.1 ● Utilizzo di repeat
  • 64. Ciclo WHILECiclo WHILE ● Il ciclo while può essere visto come un repeat in cui “forziamo” il controllo della condizione di uscita... ● Sintassi: while(condizione){ istruzione_1; ... istruzione_n; } il ciclo continua l'esecuzione finchè condizione è vera.
  • 65. Esempio 3.2Esempio 3.2 ● Utilizzo del ciclo while
  • 66. Ciclo FORCiclo FOR ● Il ciclo FOR è lievemente diverso da quello che conosciamo... ● Invece di incrementare un contatore, “scorre” un vettore o una lista. (per chi conosce PHP, è simile a foreach). ● Sintassi: for (elem in vector){ istruzione_1; ... istruzione_n; }
  • 67. Oddio, cos'è? Non capiscoOddio, cos'è? Non capisco niente!niente! ● Calma... ● All'i-esima iterazione, alla variabile elem viene assegnato l'i-esimo elemento del vettore (o lista) vector. ● L'esecuzione del ciclo termina quando abbiamo analizzato tutti gli elementi del vettore.
  • 68. Hmm, forse ci siamo...Hmm, forse ci siamo... ● Il ciclo for di cui disponiamo in R può quindi essere utilizzato sia normalmente... ● Ad esempio, se vogliamo effettuare 10 iterazioni, semplicemente facciamo in modo che vector sia un vettore (o lista) di 10 elementi... ● Sia per facilitare lo scorrimento di vettori o liste ● Dato che a elem viene sempre assegnato l'i-esimo elemento del vettore o lista, basta effettuare su di lui le operazioni che ci servono WOW! FACCIAMO UN ESEMPIO??
  • 69. Esempio 3.3Esempio 3.3 ● Utilizzo “semplice” del ciclo for
  • 70. Esempio 3.4Esempio 3.4 ● Utilizzo “nuovo” del ciclo for
  • 71. Istruzione BREAKIstruzione BREAK ● L'istruzione break in R ha lo stesso ruolo che ha nel linguaggio C... ● Causa l'interruzione immediata del ciclo in cui viene eseguita ● L'esecuzione del programma riprende dalla fine di quel ciclo
  • 72. Istruzione NEXTIstruzione NEXT ● L'istruzione next ha la stessa funzione del continue in C ● Termina l'esecuzione della corrente iterazione, riportando il controllo all'inizio del ciclo in cui viene utilizzata. ● L'esecuzione del programma riprende dalla prossima iterazione del ciclo.
  • 73. ARGOMENTI DELLA LEZIONEARGOMENTI DELLA LEZIONE ● Elementi basilari di R ● Gli Oggetti di R ● Strutture di controllo ● Costrutti iterativi ● Creazione di nuove funzioni
  • 74. Creazione di nuove funzioniCreazione di nuove funzioni ● Possiamo ovviamente definire nuove funzioni oltre a quelle preesistenti ● Come? utilizzando la direttiva function.
  • 75. function()function() ● La funzione function() crea un oggetto funzione; il suo utilizzo è molto semplice ● Sintassi nomefunzione <- function(parametro_1,...,parametro_n){ istruzione_1; ... istruzione_n; } ● Per richiamare la funzione appena creata... ● nomefunzione(parametri)
  • 76. BibliografiaBibliografia ● Per la realizzazione di queste slides sono stati usati solo i documenti ufficiali di R, reperibili al sito www.r-project.org (sezione documentation).