Você está na página 1de 81

Il linguaggio R

Un invito ad approfondire
Giulio DAgostini ` di Roma La Sapienza e INFN Universita Roma, Italy

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.1/17

Sommario
Perch?

Elementi del linguaggio Qualche esempio

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.2/17

R? Perche
un linguaggio di scripting:
non necessita di compilazione adatto ad uso interattivo funzioni ad alto livello

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.3/17

R? Perche
un linguaggio di scripting:
non necessita di compilazione adatto ad uso interattivo funzioni ad alto livello multipiattaforma

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.3/17

R? Perche
un linguaggio di scripting:
non necessita di compilazione adatto ad uso interattivo funzioni ad alto livello multipiattaforma

gratuito (clone di S-Plus)

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.3/17

R? Perche
un linguaggio di scripting:
non necessita di compilazione adatto ad uso interattivo funzioni ad alto livello multipiattaforma

gratuito (clone di S-Plus)

open source (ci si pu guardare dentro!)

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.3/17

R? Perche
un linguaggio di scripting:
non necessita di compilazione adatto ad uso interattivo funzioni ad alto livello multipiattaforma

gratuito (clone di S-Plus)

open source (ci si pu guardare dentro!) specializzato per uso statistico

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.3/17

R: pro e contro

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.4/17

R: pro e contro
alto livello: funzioni potenti

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.4/17

R: pro e contro
alto livello: funzioni potenti

. . . per fare quello che sa fare

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.4/17

R: pro e contro
alto livello: funzioni potenti

. . . per fare quello che sa fare

ma non abbastanza potente/fessibile per altro

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.4/17

R: pro e contro
alto livello: funzioni potenti

. . . per fare quello che sa fare (Fortran),C, C++, Java

ma non abbastanza potente/fessibile per altro

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.4/17

R: pro e contro
alto livello: funzioni potenti

. . . per fare quello che sa fare (Fortran),C, C++, Java Perl, Php, Python

ma non abbastanza potente/fessibile per altro

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.4/17

R: pro e contro
alto livello: funzioni potenti

. . . per fare quello che sa fare (Fortran),C, C++, Java Perl, Php, Python

ma non abbastanza potente/fessibile per altro

ottimo per piccole/medie applicazioni matematiche e di analisi dati

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.4/17

R: pro e contro
alto livello: funzioni potenti

. . . per fare quello che sa fare (Fortran),C, C++, Java Perl, Php, Python

ma non abbastanza potente/fessibile per altro

ottimo per piccole/medie applicazioni matematiche e di analisi dati

Cominciamo con qualche esempio ( basi.R)

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.4/17

R: basi del linguaggio - 1


Sintassi nomi, operazioni elementari

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.5/17

R: basi del linguaggio - 1


Sintassi nomi, operazioni elementari case sensitive (nome=Nome)

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.5/17

R: basi del linguaggio - 1


Sintassi nomi, operazioni elementari case sensitive (nome=Nome) caratteri alfanumerici, pi .

(ma non possono iniziare con numero)

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.5/17

R: basi del linguaggio - 1


Sintassi nomi, operazioni elementari case sensitive (nome=Nome) caratteri alfanumerici, pi .

(ma non possono iniziare con numero) dichiarazioni non necessarie

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.5/17

R: basi del linguaggio - 1


Sintassi nomi, operazioni elementari case sensitive (nome=Nome) caratteri alfanumerici, pi .

(ma non possono iniziare con numero) dichiarazioni non necessarie usuali operatori aritmetici: +, -, *, /

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.5/17

R: basi del linguaggio - 1


Sintassi nomi, operazioni elementari case sensitive (nome=Nome) caratteri alfanumerici, pi .

(ma non possono iniziare con numero) dichiarazioni non necessarie usuali operatori aritmetici: +, -, *, / operatori logici: ==, >=, <=, !=

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.5/17

R: basi del linguaggio - 1


Sintassi nomi, operazioni elementari case sensitive (nome=Nome) caratteri alfanumerici, pi .

(ma non possono iniziare con numero) dichiarazioni non necessarie usuali operatori aritmetici: +, -, *, / operatori logici: ==, >=, <=, != ; per separare istruzioni su stessa riga

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.5/17

R: basi del linguaggio - 1


Sintassi nomi, operazioni elementari case sensitive (nome=Nome) caratteri alfanumerici, pi .

(ma non possono iniziare con numero) dichiarazioni non necessarie usuali operatori aritmetici: +, -, *, / operatori logici: ==, >=, <=, != ; per separare istruzioni su stessa riga parentesi graffe { } per raggruppare istruzioni, es. if ( ) { ......}

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.5/17

R: basi del linguaggio - 2


Strutture di controllo

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.6/17

R: basi del linguaggio - 2


Strutture di controllo if

else if else

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.6/17

R: basi del linguaggio - 2


Strutture di controllo if

else if else for

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.6/17

R: basi del linguaggio - 2


Strutture di controllo if

else if else for while

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.6/17

R: basi del linguaggio - 2


Strutture di controllo if

else if else for while switch

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.6/17

R: basi del linguaggio - 2


Strutture di controllo if

else if else for while switch repeat

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.6/17

R: basi del linguaggio - 2


Strutture di controllo if

else if else for while switch repeat + funzioni speciche: tapply, apply, lapply.

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.6/17

Ambiente di lavoro e help


Help molto potente

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.7/17

Ambiente di lavoro e help


Help molto potente
help() (notare parentesi!)

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.7/17

Ambiente di lavoro e help


Help molto potente
help() (notare parentesi!) help(comando), ovvero ?comando (per molti

comandi gli apicetti possono essere ignorati)

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.7/17

Ambiente di lavoro e help


Help molto potente
help() (notare parentesi!) help(comando), ovvero ?comando (per molti

comandi gli apicetti possono essere ignorati)

help = help()

le funzioni senza argomento danno loro stesse! (con eccezione delle primitive)

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.7/17

Ambiente di lavoro e help


Help molto potente
help() (notare parentesi!) help(comando), ovvero ?comando (per molti

comandi gli apicetti possono essere ignorati)

help = help()

le funzioni senza argomento danno loro stesse! (con eccezione delle primitive)

ls(): variabili/funzioni della sessione

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.7/17

Ambiente di lavoro e help


Help molto potente
help() (notare parentesi!) help(comando), ovvero ?comando (per molti

comandi gli apicetti possono essere ignorati)

help = help()

le funzioni senza argomento danno loro stesse! (con eccezione delle primitive)

ls(): variabili/funzioni della sessione ls.str(): fornisce ulteriori dettagli

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.7/17

Ambiente di lavoro e help


Help molto potente
help() (notare parentesi!) help(comando), ovvero ?comando (per molti

comandi gli apicetti possono essere ignorati)

help = help()

le funzioni senza argomento danno loro stesse! (con eccezione delle primitive)

ls(): variabili/funzioni della sessione ls.str(): fornisce ulteriori dettagli help.start() help su browser!

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.7/17

Sessione - 1
R si ricorda quello che abbiamo fatto!

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.8/17

Sessione - 1
R si ricorda quello che abbiamo fatto!
> q()

Save workspace image? > y

[y/n/c]:

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.8/17

Sessione - 1
R si ricorda quello che abbiamo fatto!
> q()

Save workspace image? > y

[y/n/c]:

Informazioni della sessione su due le

.RData .Rhistory

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.8/17

Sessione - 1
R si ricorda quello che abbiamo fatto!
> q()

Save workspace image? > y

[y/n/c]:

Informazioni della sessione su due le

.RData .Rhistory

La volta successiva che R chiamato, vengono ricaricati

.RData e .Rhistory contenuti nella directory da cui lo si chiama

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.8/17

Sessione - 1
R si ricorda quello che abbiamo fatto!
> q()

Save workspace image? > y

[y/n/c]:

Informazioni della sessione su due le

.RData .Rhistory

La volta successiva che R chiamato, vengono ricaricati

.RData e .Rhistory contenuti nella directory da cui lo si chiama

creare diverse directory per diversi progetti

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.8/17

Pulizia
Sovrascrittura e cancellazione degli oggetti

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.9/17

Pulizia
Sovrascrittura e cancellazione degli oggetti
Ogni assegnazione sovrascrive leventuale oggetto avente

stesso nome: half <- function(x) x/2 (quasi come in C. . . ) half(pi) half <- 1/2

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.9/17

Pulizia
Sovrascrittura e cancellazione degli oggetti
Ogni assegnazione sovrascrive leventuale oggetto avente

stesso nome: half <- function(x) x/2 (quasi come in C. . . ) half(pi) half <- 1/2 esempio rm(half) (attenzione: non chiede conferma!)

Gli oggetti possono essere rimossi con rm(oggetto), ad

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.9/17

Pulizia
Sovrascrittura e cancellazione degli oggetti
Ogni assegnazione sovrascrive leventuale oggetto avente

stesso nome: half <- function(x) x/2 (quasi come in C. . . ) half(pi) half <- 1/2 esempio rm(half) (attenzione: non chiede conferma!)

Gli oggetti possono essere rimossi con rm(oggetto), ad

rimozioni multiple: rm(x,y,pippo,ora)

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.9/17

Comandi di sistema
Interazione con il sistema operativo

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.10/17

Comandi di sistema
Interazione con il sistema operativo
system(comando di sistema)

esempio: system(ls -la)

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.10/17

Comandi di sistema
Interazione con il sistema operativo
system(comando di sistema)

esempio: system(ls -la)

system(date)

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.10/17

Comandi di sistema
Interazione con il sistema operativo
system(comando di sistema)

esempio: system(ls -la)

system(date) oggi <- system(date +%d)

ora <- system(date +%H) minuti <- system(date +%M)

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.10/17

Comandi di sistema
Interazione con il sistema operativo
system(comando di sistema)

esempio: system(ls -la)

system(date) oggi <- system(date +%d)

ora <- system(date +%H) minuti <- system(date +%M) source(file di comandi) tipicamente nome file.R

Per eseguire scripts:

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.10/17

Vettori, arrays, liste


Uno dei vantaggi di linguaggi tipo R rispetto a C/C++ etc. consiste nella gestione compatta di strutture di dati
I vettori possono contenere solo dati omogenei (numerici o

caratteri)

Gli arrays possono estensioni multidimensionali (a molti

indici) dei vettori. Il caso a due indici una matrice

Le liste sono collezioni ordinate di oggetti, anche di tipo

diverso.

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.11/17

Vettori: esempi ( vettori.R)

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.12/17

Vettori: esempi ( vettori.R)


x <- c(0., 4.5, 1.3, 3.2)

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.12/17

Vettori: esempi ( vettori.R)


x <- c(0., 4.5, 1.3, 3.2) length(x), min(x), max(x), sum(x), prod(x),

mean(x), sd(x)

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.12/17

Vettori: esempi ( vettori.R)


x <- c(0., 4.5, 1.3, 3.2) length(x), min(x), max(x), sum(x), prod(x),

mean(x), sd(x)

1/sqrt(x), sum(x2)

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.12/17

Vettori: esempi ( vettori.R)


x <- c(0., 4.5, 1.3, 3.2) length(x), min(x), max(x), sum(x), prod(x),

mean(x), sd(x)

1/sqrt(x), sum(x2)

dato y <- c(2, 5.2, 3, 0),

si pu calcolare x+y, x/y, etc.

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.12/17

Vettori: esempi ( vettori.R)


x <- c(0., 4.5, 1.3, 3.2) length(x), min(x), max(x), sum(x), prod(x),

mean(x), sd(x)

1/sqrt(x), sum(x2)

dato y <- c(2, 5.2, 3, 0),

si pu calcolare x+y, x/y, etc.

R gestisce anche valori vuoti, inniti o indeniti

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.12/17

Vettori: esempi ( vettori.R)


x <- c(0., 4.5, 1.3, 3.2) length(x), min(x), max(x), sum(x), prod(x),

mean(x), sd(x)

1/sqrt(x), sum(x2)

dato y <- c(2, 5.2, 3, 0),

si pu calcolare x+y, x/y, etc.

R gestisce anche valori vuoti, inniti o indeniti dato z <- c(0, NA, 3, 1/0),

quanto fa x/z?

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.12/17

Vettori: esempi ( vettori.R)


x <- c(0., 4.5, 1.3, 3.2) length(x), min(x), max(x), sum(x), prod(x),

mean(x), sd(x)

1/sqrt(x), sum(x2)

dato y <- c(2, 5.2, 3, 0),

si pu calcolare x+y, x/y, etc.

R gestisce anche valori vuoti, inniti o indeniti dato z <- c(0, NA, 3, 1/0),

quanto fa x/z?

NaN NA 0.4333333 0.0000000

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.12/17

Vettori: esempi ( vettori.R)


x <- c(0., 4.5, 1.3, 3.2) length(x), min(x), max(x), sum(x), prod(x),

mean(x), sd(x)

1/sqrt(x), sum(x2)

dato y <- c(2, 5.2, 3, 0),

si pu calcolare x+y, x/y, etc.

R gestisce anche valori vuoti, inniti o indeniti dato z <- c(0, NA, 3, 1/0),

quanto fa x/z?

NaN NA 0.4333333 0.0000000 Funzioni per gestire NA, NaN e Inf:

is.na(), is.nan(), is.infinite(), is.finite()

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.12/17

` ( prob.R) Funzioni di probabilita


R conosce le principali funzioni di probabilit Dato nome, es. binom, pois, norm, unif, geom, chisq, . . .

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.13/17

` ( prob.R) Funzioni di probabilita


R conosce le principali funzioni di probabilit Dato nome, es. binom, pois, norm, unif, geom, chisq, . . .
dnome(x, ) funzione/densit di probabilit f (x);

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.13/17

` ( prob.R) Funzioni di probabilita


R conosce le principali funzioni di probabilit Dato nome, es. binom, pois, norm, unif, geom, chisq, . . .
dnome(x, ) funzione/densit di probabilit f (x); pnome(x, ) cumulativa F (x);

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.13/17

` ( prob.R) Funzioni di probabilita


R conosce le principali funzioni di probabilit Dato nome, es. binom, pois, norm, unif, geom, chisq, . . .
dnome(x, ) funzione/densit di probabilit f (x); pnome(x, ) cumulativa F (x); qnome(p, ) quantili x tale che p = F (x);

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.13/17

` ( prob.R) Funzioni di probabilita


R conosce le principali funzioni di probabilit Dato nome, es. binom, pois, norm, unif, geom, chisq, . . .
dnome(x, ) funzione/densit di probabilit f (x); pnome(x, ) cumulativa F (x); qnome(p, ) quantili x tale che p = F (x); rnome(n, ) n numeri (pseudo-)casuali.

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.13/17

` ( prob.R) Funzioni di probabilita


R conosce le principali funzioni di probabilit Dato nome, es. binom, pois, norm, unif, geom, chisq, . . .
dnome(x, ) funzione/densit di probabilit f (x); pnome(x, ) cumulativa F (x); qnome(p, ) quantili x tale che p = F (x); rnome(n, ) n numeri (pseudo-)casuali. Nota: x e p possono anche dei vettori.

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.13/17

Graca ( plots.R)
R ha molte funzioni per la graca: plot, istogrammi, etc

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.14/17

Graca ( plots.R)
R ha molte funzioni per la graca: plot, istogrammi, etc
plot(x, ) plot di x Vs numero dordine

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.14/17

Graca ( plots.R)
R ha molte funzioni per la graca: plot, istogrammi, etc
plot(x, ) plot di x Vs numero dordine plot(x,y, ) scatter plot y Vs x

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.14/17

Graca ( plots.R)
R ha molte funzioni per la graca: plot, istogrammi, etc
plot(x, ) plot di x Vs numero dordine plot(x,y, ) scatter plot y Vs x varie opzione di graca, didascalie, etc.

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.14/17

Graca ( plots.R)
R ha molte funzioni per la graca: plot, istogrammi, etc
plot(x, ) plot di x Vs numero dordine plot(x,y, ) scatter plot y Vs x hist(x, ): istogramma varie opzione di graca, didascalie, etc.

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.14/17

Graca ( plots.R)
R ha molte funzioni per la graca: plot, istogrammi, etc
plot(x, ) plot di x Vs numero dordine plot(x,y, ) scatter plot y Vs x hist(x, ): istogramma varie opzione di graca, didascalie, etc. curve(funzione(x), )

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.14/17

Altri esempi (e concetti)

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.15/17

Altri esempi (e concetti)


Piccolo esempio di uso di R come calcolatorino dotato di

graca RC.R

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.15/17

Altri esempi (e concetti)


Piccolo esempio di uso di R come calcolatorino dotato di Data frame voti.R

graca RC.R

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.15/17

Altri esempi (e concetti)


Piccolo esempio di uso di R come calcolatorino dotato di Data frame voti.R Matrici matrici.R

graca RC.R

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.15/17

Altri esempi (e concetti)


Piccolo esempio di uso di R come calcolatorino dotato di Data frame voti.R Matrici matrici.R Uso batch (calcoli, plot, etc. senza dover aprire una

graca RC.R

sessione):

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.15/17

Altri esempi (e concetti)


Piccolo esempio di uso di R come calcolatorino dotato di Data frame voti.R Matrici matrici.R Uso batch (calcoli, plot, etc. senza dover aprire una

graca RC.R

sessione):

echo rnorm(10) | R --slave

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.15/17

Referenze
Sito ufciale googlare R

(cos si impara anche che esiste un altro super-calcolatorino. . . )

Download sorgenti/rpm per Unix, binary per Windows Molta documentazione: manuale, intros, etc. inclusi

nellistallazione; esempi in giro

Possibilit di aggiungere pacchetti (molti!) da repositories in

modo pressoch automatico

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.16/17

Conclusioni
Vale la pena di provare buon divertimento! Ulteriori esempi:
mc1.R: MC stima e Teorema Limite Centrale mc lotto.R: MC estrazioni al lotto mc gassiane.R: MC gaussiane

mc hit miss.R: MC, inversione F (x) Vs hit-miss

triang.R: dtriang, ptriang e rtriang; simulazione somma di

triangolari asimmetriche.

prop cov.R: propagazione varianze/covarianze (assume

linearizzazione derivate fatte da R)

Introduzione al linguaggio R - G. DAgostini, Roma 26/1/05 p.17/17

Você também pode gostar