• Non ci sono risultati.

Una breve introduzione a R

N/A
N/A
Protected

Academic year: 2021

Condividi "Una breve introduzione a R"

Copied!
40
0
0

Testo completo

(1)

Una breve introduzione a R

Eva Riccomagno, Maria Piera Rogantin

DIMA – Universit`a di Genova

(2)

Il software R e l’interfaccia R-studio

R ` e un software per la statistica e la grafica.

Consiste di un linguaggio base e di varie funzioni statistiche.

E ampliabile tramite librerie (packages). `

R e R-studio sono gratuiti e scaricabili da https://cran.r-project.org/

https://www.rstudio.com/products/rstudio/download/

(3)

Come scrivere e far eseguire un programma Aprendo R Studio si presentano 4 finestre

(la cui posizione sullo schermo pu` o esser modificata)

• Console

dove si possono scrivere le istruzioni e dove viene scritto l’output numerico; il prompt ` e >

• R-script

dove si possono scrivere le istruzioni e salvarle per un succes- sivo utilizzo

• Environment - History

dove si possono vedere le strutture dati utilizzate

• Plots - Help - Packages - ...

dove vengono scritti gli output grafici, l’help, i package di R

attivabili, ...

(4)

• Le istruzioni possono essere scritte

– direttamente sulla Console e poi eseguite battendo Invio (per richiamare le istruzioni eseguite usare le frecce)

– nella finestra R-script (consigliato in modo da salvare su file e poterlo rieseguire o modificare); per eseguire le istruzioni su una o pi` u righe o parti di riga selezionare il testo e pul- sante Run (in alto a sinistra), o battere opportune combi- nazioni di tasti

Le istruzioni sono automaticamente copiate sulla finestra Console quando eseguite

• R ` e case sensitive

• Su una stessa riga si possono scrivere pi` u istruzioni separate da ;

Un’istruzione pu` o essere scritta su pi` u righe (sulla Console il prompt diventa + finch´ e l’istruzione non ` e terminata)

• I commenti devono essere preceduti da #

• L’output viene scritto sulla finestra Console o sulla finestra

Plot

(5)

Help

• finestra Help

sia per informazioni generali che per istruzioni specifiche

• istruzione apropos

se di conosce una parte del nome dell’istruzione apropos("<parte del nome dell’istruzione>")

> apropos("med")

[1] ".__C__namedList" "elNamed" "elNamed<-" "median"

[5] "median.default" "medpolish" "runmed"

• Motori di ricerca!!!

(6)

Elementi essenziali della programmazione in R

Oggetti in R

scalari, vettori, liste, matrici, tabelle, dataset, . . .

• Costruzione e assegnazione del nome a un oggetto x=3 oppure x<-3 oppure 3->x

I nomi possono contenere lettere, numeri, caratteri come -, _, etc. (Control- lare!). Il primo carattere deve essere una lettera.

• Tipi di oggetto

- numerico: x=3 - carattere: t="Ciao"

- logico: z=TRUE; valori ammessi: TRUE (o T), FALSE (o F).

• Visualizzazione del contenuto di un oggetto

> x [1] 3

Quando un oggetto viene costruito, nella finestra Environment

compaiono il nome, il tipo, i suoi (primi) valori, e altro

(7)

Vettori

• Assegnare elementi a un vettore

attenzione alla funzione c (concatenazione):

> y = c(10,9,8,7,6,5,4,3,2,1)

• Estrarre/rimuovere elementi da un vettore

> y[2] ## 2 e‘ l’indice/la posizione dell’elemento da estrarre [1] 9

> y[3:6] ## ritorna il contenuto di y nelle posizioni da 3 a 6 [1] 8 7 6 5

> y[c(2,3,6)]

[1] 9 8 5

> y[-4] ## specifica l’indice dell’elemento da rimuovere

[1] 10 9 8 6 5 4 3 2 1

(8)

• Operazioni e funzioni con scalari e vettori

Operazioni aritmetiche (+, -, *, /, elevamento a potenza ^),

Funzioni matematiche sqrt, abs, sin, cos, tan, exp, log, log10, ceiling, floor, round,... .

Su vettori agiscono elemento per elemento .

> x=c(1,2,3,4)

> sqrt(x)

[1] 1.000000 1.414214 1.732051 2.000000

Attenzione al caso in cui le dimensioni dei vettori non sono compatibili.

> y=c(10,20,30)

> x+y

[1] 11 22 33 14 Warning message:

In x + y : longer object length is not a multiple of shorter object length

Funzioni statistiche (su vettori) mean, median, var, sd, min, max,... .

Dimensione di un vettore length

(diverso dal caso matrice, tabella, ... in cui si usa dim)

(9)

• Valori mancanti

Simbolo di default: NA. Altri simboli possono essere definiti/utilizzati

> vettore=c(13,12,NA,45,72,NA,23)

> vettore

[1] 13 12 NA 45 72 NA 23

– Rimuovere i valori mancanti

> v=na.omit(vettore);v [1] 13 12 45 72 23

attr(,"na.action")

[1] 3 6 # posizione dei valori mancanti attr(,"class")

[1] "omit"

– Statistiche con i valori mancanti

> mean(vettore) [1] NA

> mean(vettore,na.rm=T)

[1] 33

(10)

Dataset

Struttura di un dataset

• righe: osservazioni (soggetti/unit` a/ ...)

• colonne: variabili Un esempio

Gli studenti di una classe misurano le loro pulsazioni cardiache al minuto; quindi lanciano una moneta: se testa corrono per un minuto, se croce no; dopo un minuto misurano nuovamente le pulsazioni.

variabili

osservazioni

PULSE1 Numero prime pulsazioni al minuto PULSE2 Numero seconde pulsazioni al minuto

RAN Se lo studente corre o sta seduto (1: testa, corre – 2: croce, seduto) SMOKES Abitudine al fumo (1: si – 2: no)

SEX Genere (1: M – 2: F)

HEIGHT Altezza (inch) WEIGHT Peso (lb)

ACTIVITY Abitudine all’attivita fisica (0: no – 1: poca – 2: moderata – 3: alta) OBS PULSE1 PULSE2 RAN SMOKES SEX HEIGHT WEIGHT ACTIVITY

1 64 88 1 2 1 66.00 140 2

2 58 70 1 2 1 72.00 145 2

3 62 76 1 1 1 73.50 160 3

(11)

Leggere/creare un dataset in R 1. Dati contenuti in un file di testo

(con alcune versioni di RStudio si pu` o fare da Menu) Esempio: PULSE I dati sono separati da blank.

pulse=read.table("C:/DATA/pulse.txt",header=T,row.name=1)

header=T: la prima riga contiene i nomi delle variabili

row.name=1: la prima colonna contiene i nomi dei soggetti

> pulse

PULSE1 PULSE2 RAN SMOKES SEX HEIGHT WEIGHT ACTIVITY

1 64 88 1 2 1 66.00 140 2

2 58 70 1 2 1 72.00 145 2

3 62 76 1 1 1 73.50 160 3

Nella finestra Environment compaiono le informazioni sul nuovo

oggetto costruito. Per visualizzare il contenuto del dataset clic-

care sul pulsante a destra oppure battere View(<nome dataset>)

Nella finestra Viewer si possono applicare filtri alle variabili e

ordinare le righe secondo una variabile come in Excel. Ma il

contenuto non viene salvato.

(12)

Accedere alle variabili di un dataset

> PULSE1 # error

Error: object ’PULSE1’ not found

Due modi:

• facendo precedere al nome della variabile il nome del dataset seguito da $

> pulse$PULSE1

[1] 64 58 62 66 64 74 84 68 62 76 90 [12] 80 92 68 60 62 66 70 68 72 70 74

• usando l’istruzione attach . Il software ricerca le variabili anche nel data frame

> attach(pulse)

> PULSE1

[1] 64 58 62 66 64 74 84 68 62 76 90 per chiudere l’effetto dell’istruzione attach si utilizza

detach(pulse)

(importante in presenza di variabili con lo stesso nome appartenenti a data frame diversi o quando si modifica un dataset!)

(13)

Principali opzioni di read.table

- file="" nome del file, con il suo percorso (usare / no \);

file= pu` o essere omesso; alternativamente usare file.choose() - sep="" separatore fra valori variabili (default: blank;

se tabulatore: "\t" ). Con RStudio default: blank e tabulatore - dec="" separatore decimale (default: punto)

- na.strings= "" stringa o vettore di stringhe denotanti i valori mancanti (default: NA)

- header=T (o F) se la prima riga contiene i nomi delle variabili (o no)

- row.names= numero o nome della colonna o vettore contenente il nome dei soggetti (se c’` e)

- col.names= vettore contenente il nome delle variabili (se non presente nella prima riga)

- skip= numero di righe da saltare all’inizio del file

- nrows= numero di righe da leggere

(14)

Uso di setwd

Per definire la cartella di lavoro in cui leggere (ed eventualmente scrivere) i dati si pu` o usare l’istruzione setwd

Qualche esempio

setwd("C:/DATA/")

## setwd("~/Desktop/...percorso") ## per Mac

cicale=read.table("cicala.txt",header =T,nrows=104,row.names=1, sep=";",dec=",",na.strings="999")

d=read.table("swiss_no_h.txt",header=F,row.names=1,col.names=c("Fertility",

"Agriculture","Examination","Education","Catholic","Infant.Mortality"))

(15)

Variabili quantitative/qualitative m

Oggetti numerici/carattere

Visualizzare la struttura di un dataset

> str(pulse) ### cf. dim(pulse)

’data.frame’: 92 obs. of 8 variables:

$ PULSE1 : int 64 58 62 66 64 74 84 68 62 76 ...

$ PULSE2 : int 88 70 76 78 80 84 84 72 75 118 ...

$ RAN : int 1 1 1 1 1 1 1 1 1 1 ...

$ SMOKES : int 2 2 1 1 2 2 2 2 2 2 ...

$ SEX : int 1 1 1 1 1 1 1 1 1 1 ...

$ HEIGHT : num 66 72 73.5 73 69 73 72 74 72 71 ...

$ WEIGHT : int 140 145 160 190 155 165 150 190 195 138 ...

$ ACTIVITY: int 2 2 3 1 2 1 3 2 2 2 ...

(16)

Creare fattori nominali e fattori ordinali

• Fattori nominali

> ran=factor(RAN,levels=c(1,2),labels=c("run","sit")); ran [1] run run run run run run run run run run run run run [14] run run run run run run run run run run run run run [27] run run run run run run run run run sit sit sit sit ...

> mode(ran) [1] "numeric"

> str(ran)

Factor w/ 2 levels "run","sit": 1 1 1 1 1 1 1 1 1 1 ...

• Fattori ordinali

> activity=ordered(ACTIVITY,levels=c(0,1,2,3),

+ labels=c("no","low","medium","high")); activity [1] medium medium high low medium low high

....

> mode(activity) [1] "numeric"

> str(activity)

Ord.factor w/ 4 levels "no"<"low"<"medium"<..: 3 3 4 2 3 2 4 3 3 3 ...

> levels(activity) ##### per ottenere i livelli della variabile [1] "no" "low" "medium" "high"

(17)

2. Creare un dataset da un file Excel

a) Da menu – se la versione di RStudio prevede la possibilit` a

• nella finestra Environment cliccare Import dataset e poi from Excel

• si apre una finestra Import from Excel dove si deve indicare l’indirizzo del file Excel.

• nella sottofinestra Import option indicare se la prima riga con- tiene i nomi delle variabili, se si vogliono saltare righe all’inizio, ecc.

• nella sottofinestra in basso a destra compaiono le istruzioni R corrispondenti.

Se ` e la prima volta che si compie l’operazione il software chiede di installare la libreria readxl – seguire le istruzioni.

Per richiamare la libreria installata si usa l’istruzione library(readxl)

(vedi prima riga del programma in basso a destra)

(18)

b) Con istruzioni

• in Excel:

salvare il foglio in formato CSV (comma delimited) *.csv

• in Notepad (o altro editore di testi formato ascii):

aprire il file *.csv e controllare i caratteri usati per il separatore di variabili e il separatore decimale

• in R:

usare read.table con opportune opzioni per i separatori

(19)

3. Creare un dataset (“piccolo”) con opzione text di read.table Esempio

data = read.table(text=

"id,type,gender,q1,q2,q3,q4 # no virgola alla fine della riga 1,1,f,1,1,5,1

2,2,f,2,1,4,1 3,1,f,2,2,4,3 4,2, ,3,1, ,3 5,1,m,4,5,2,4 6,2,m,5,4,5,5 7,1,m,5,3,4,4

8,2,m,4,5,5,5",header=TRUE, sep=",", row.names="id", na.strings=" ")

(20)

4. Creare un dataset da vettori o matrici Istruzione data.frame .

> y = c(10,9,8,7,6,5,4,3,2,1)

> x = c("A","A","B","B","A","B","A","A","B","B")

> xy=data.frame(x,y);xy ## sono riportate le prime righe x y

1 A 10

2 A 9

3 B 8

Assegnare valori a una matrice

> B=matrix(c(1,2,0,1),nrow=2,byrow=F)

> colnames(B)=c("C1","C2")

> rownames(B)=c("R1","R2")

> B

C1 C2 R1 1 0 R2 2 1

Creare un dataset da una matrice.

m_dati =matrix(c(

1,1,5,1, 2,1,4,1, 3,2,4,3, 4,1,NA,3,

5,2,5,5), ncol=4,byrow=T)

colnames(m_dati)=c("id","tipo","q1","q2") dati = data.frame(m_dati,row.names="id")

(21)

Funzioni su un dataset

• Cancellare righe con valori mancanti

data2=na.omit(data)

• Dimensione del dataset

> dim(data) ## vector with 2 elements [1] 8 6

> dim(data)[1] > dim(data)[2]

[1] 8 [1] 6

• Estrarre il nome di righe/colonne

> rownames(data)

[1] "1" "2" "3" "4" "5" "6" "7" "8"

> colnames(data) ## equivalentemente names(data) [1] "type" "gender" "q1" "q2" "q3" "q4"

• Cancellare righe o colonne

d1=data[-c(1,3,7),]

d2=data[,-2]

(22)

• Selezionare righe e colonne specificate dai loro indici - Selezionare righe

Data=data[2:4,]; Data

type gender q1 q2 q3 q4

2 2 f 2 1 4 1

3 1 f 2 2 4 3

4 2 <NA> 3 1 NA 3 Data2=data[c(1,3),];Data2 type gender q1 q2 q3 q4

1 1 f 1 1 5 1

3 1 f 2 2 4 3

- Selezionare colonne

data3=data[,2:4]

(23)

• Selezionare un sottoinsieme di righe identificate dai valori di una variabile (applicare filtri)

dataM2= subset(data,gender=="m");dataM2 type gender q1 q2 q3 q4

5 1 m 4 5 2 4

6 2 m 5 4 5 5

7 1 m 5 3 4 4

8 2 m 4 5 5 5

dataM=data[data$gender=="m",];dataM #4th subject has gender=NA type gender q1 q2 q3 q4

NA NA <NA> NA NA NA NA

5 1 m 4 5 2 4

6 2 m 5 4 5 5

7 1 m 5 3 4 4

8 2 m 4 5 5 5

dataM1=na.omit(data[data$gender=="m",]);dataM1 type gender q1 q2 q3 q4

5 1 m 4 5 2 4

6 2 m 5 4 5 5

7 1 m 5 3 4 4

8 2 m 4 5 5 5

(24)

• Selezionare un sottoinsieme di colonne - istruzioni equivalenti

data4=subset(data, select=c(gender,q1,q2)) data5=subset(data, select=gender:q2)

data6=subset(data, select=2:4)

data7=data[,2:4] # non si possono usare i nomi delle colonne

• Selezionare le prime o le ultime righe

head(data,3)

type gender q1 q2 q3 q4

1 1 f 1 1 5 1

2 2 f 2 1 4 1

3 1 f 2 2 4 3

tail(data,2)

type gender q1 q2 q3 q4

7 1 m 5 3 4 4

8 2 m 4 5 5 5

(25)

• Concatenare dataset “compatibili”

per riga (rbind)

dataM2=subset(data,gender=="m") | dataF2=subset(data,gender=="f") | dataMF=rbind(dataM2,dataF2) |

dataMF |

type gender q1 q2 q3 q4 |

5 1 m 4 5 2 4 |

6 2 m 5 4 5 5 |

7 1 m 5 3 4 4 |

8 2 m 4 5 5 5 |

51 1 f 1 1 5 1 |

61 2 f 2 1 4 1 |

71 1 f 2 2 4 3 |

|

per colonna (cbind)

dataA=subset(data,select=q1:q2)

dataB=subset(data,select=type:gender) dataC=cbind(dataA,dataB)

dataC

q1 q2 type gender

1 1 1 1 f

2 2 1 2 f

3 2 2 1 f

4 3 1 2 <NA>

5 4 5 1 m

6 5 4 2 m

7 5 3 1 m

8 4 5 2 m

(26)

• Ordinare un dataset secondo una o pi` u variabili

> attach(data) # eseguito anche in precedenza

> dd2= data[order(type), ]

> # OPPURE

> dd2= data[with(data, order(type)), ]}

> dd2

type gender q1 q2 q3 q4

1 1 f 1 1 5 1

3 1 f 2 2 4 3

5 1 m 4 5 2 4

7 1 m 5 3 4 4

2 2 f 2 1 4 1

4 2 <NA> 3 1 NA 3

6 2 m 5 4 5 5

8 2 m 4 5 5 5

> dd3= data[order(type,-q1), ] ## se eseguito attach(data)

> dd3 ## first type ascending, then q1 descending type gender q1 q2 q3 q4

7 1 m 5 3 4 4

5 1 m 4 5 2 4

3 1 f 2 2 4 3

1 1 f 1 1 5 1

6 2 m 5 4 5 5

8 2 m 4 5 5 5

4 2 <NA> 3 1 NA 3

2 2 f 2 1 4 1

(27)

Approfondimenti

Operatori logici:

<, <=, >, >=, == (uguale), != (diverso), & (e), | (o) Vettori

• Condizioni logiche su un vettore

> y>=3 ## specify a vector of logical values

[1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE FALSE

> y[y>=3]

[1] 10 9 8 7 6 5 4 3

• Estrarre gli indici degli elementi di un vettore che soddisfano una condizione logica

> which(y>=3)

[1] 1 2 3 4 5 6 7 8

(28)

• Specifiche configurazioni di dati

> a=5:15; a

[1] 5 6 7 8 9 10 11 12 13 14 15

> y=15:1; y

[1] 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1

> b=seq(5,16,3);b ## the first value is 5;

> ## the final value is <= 16; by 3 [1] 5 8 11 14

> c=rep(c(1,2,3),4);c

[1] 1 2 3 1 2 3 1 2 3 1 2 3

> c(rep("M",3),rep("F",4))

[1] "M" "M" "M" "F" "F" "F" "F"

> LETTERS[1:10] # pay attention to the brackets [1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J"

> letters[1:10]

[1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j"

(29)

Matrici

• Assegnare valori a una matrice

> A=matrix(c(2,3,4,5),nrow=2,byrow=T)

> B=matrix(c(1,2,0,1),nrow=2,byrow=F)

> colnames(B)=c("C1","C2")

> rownames(B)=c("R1","R2")

> A

[,1] [,2]

[1,] 2 3

[2,] 4 5

> B

C1 C2 R1 1 0 R2 2 1

• Operazioni con matrici

- Operazioni elemento per elemento (*,+,/,. . . )

> A*B

C1 C2 R1 2 0 R2 8 5

- Moltiplicazione di matrici

> A%*%B C1 C2 [1,] 8 3 [2,] 14 5

(30)

- Determinante

> det(A) [1] -2

- Inversa

> solve(A)

[,1] [,2]

[1,] -2.5 1.5 [2,] 2.0 -1.0

- Trasposta

> t(A)

[,1] [,2]

[1,] 2 4

[2,] 3 5

- Diagonale

> diag(A) > diag(diag(A))

[1] 2 5 [,1] [,2]

[1,] 2 0

[2,] 0 5

- Soluzione del sistema lineare AX = B

> solve(A,B)

C1 C2

[1,] 0.5 1.5 [2,] 0.0 -1.0

(31)

- Autovalori/autovettori

> E=eigen(A);E

$values

[1] 7.2749172 -0.2749172

$vectors

[,1] [,2]

[1,] -0.4943691 -0.7968121 [2,] -0.8692521 0.6042272

> round(E$values,3) [1] 7.275 -0.275

> round(E$vectors,3) [,1] [,2]

[1,] -0.494 -0.797 [2,] -0.869 0.604

E ` e una lista con due elementi

Notare l’uso di round

(32)

• Matrici e Dataset

> mdata=data.matrix(data);mdata type gender q1 q2 q3 q4

1 1 1 1 1 5 1

2 2 1 2 1 4 1

3 1 1 2 2 4 3

4 2 NA 3 1 NA 3

5 1 2 4 5 2 4

6 2 2 5 4 5 5

7 1 2 5 3 4 4

8 2 2 4 5 5 5

> DB=data.frame(B)

> DB

C1 C2 R1 1 0 R2 2 1

Notare che i nomi delle righe e delle colonne sono conservati.

(33)

Istruzioni condizionali e cicli

• Istruzione if Forma generale:

if(...) { ... } else { ... }

Tra parentesi tonde ` e scritta una condizione logica; se ` e vera vengono eseguite le istruzioni scritte nelle prime parentesi graffe, se ` e falsa le istruzioni scritte nelle seconde parentesi graffe.

Forma pi` u semplice quando, se la condizione risulta falsa, non viene effettuata nessuna operazione.

if(...) { ... } Esempio:

if(1==0) {print(1)} else {print(2)}

(34)

• Istruzione ifelse Forma generale:

ifelse(..., ..., ...) Ha tre argomenti:

- il primo ` e una condizione logica,

- il secondo l’operazione da fare se la condizione ` e vera, - il terzo se la condizione ` e falsa.

E molto utile per ricodificare una variabile, ad esempio: `

> q4Sagree <- ifelse( q4 == 5, 1,0)

> q4Sagree

[1] 0 0 0 0 0 1 0 1

> q4Sagree1 <- as.numeric( q4 == 5 )

> q4Sagree1

[1] 0 0 0 0 0 1 0 1

> q4Sagree2 =(q4==5)

> q4Sagree2

[1] FALSE FALSE FALSE FALSE FALSE TRUE FALSE TRUE

> q4_new = ifelse(q4 == 3, 0, ifelse(q4 < 3,-1,1))

> q4_new

[1] -1 -1 0 0 1 1 1 1

(35)

• Ciclo for

Quando una o pi` u istruzioni vanno ripetute al variare di un indice.

Esempio. Costruzione dei diagrammi a barre per i profili riga (si vedano le dispense).

profili_riga=prop.table(as.matrix(tumore), 1) par(mfrow=c(2,2))

### suddivide la finestra grafica in due righe e due colonne

barplot(profili_riga[1,],ylim=c(0,1),main=rownames(profili_riga)[1]) barplot(profili_riga[2,],ylim=c(0,1),main=rownames(profili_riga)[2]) barplot(profili_riga[3,],ylim=c(0,1),main=rownames(profili_riga)[3]) barplot(profili_riga[4,],ylim=c(0,1),main=rownames(profili_riga)[4])

Forma sintetica per le quattro istruzioni

for (i in 1:dim(profili_riga)[1])

{barplot(profili_riga[i,],ylim=c(0,1),main=rownames(profili_riga)[i])}

Forma generale del ciclo for

for (i in .... ) ## attenzione alle parentesi tonde;

## i in questo caso \‘e l’indice del ciclo {... } ## attenzione alle parentesi graffe

## che contengono una serie di istruzioni da reiterare

(36)

Rappresentazioni grafiche

• Alcune istruzioni generali

– par(new=T) per rappresentare sulla stessa finestra grafica aperta un nuovo grafico; par(new=F) per disabilitare l’effetto dell’istruzione precedente

– par(mfrow=c(nr,nc)) per partizionare la finestra grafica in nr righe e nc colonne; per ripristinare la finestra indivisa par(mfrow=c(1,1))

– abline(v=y,h=x) per aggiungere linee verticali nella po- sizione y e linee orizzontali nella posizione x; x e y possono essere vettori

– text(x,y,label="l") per aggiungere nella posizione (x,y) il

testo l; x, y e l possono essere vettori (serve ad esempio

per scrivere i “nomi” dei punti; in tal caso l pu` o essere

rownames(..))

(37)

– legend(x,y,legend=c("..",".."),pch=c(..,..), col=c("..",".."))

per aggiungere un rettangolo con il vertice alto a sinistra nella posizione (x,y) con le indicazioni di simboli e co- lori utilizzati. Al posto delle coordinare si possono usare

”bottomright”, ”bottom”, ”bottomleft”, ”left”, ”topleft”,

”top”, ”topright”, ”right” o ”center”

Esempio

legend(x,y,legend=c("uno","due","tre"), pch=c(15,16,17), col=c("red","blue","green"))

nel rettangolo vengono scritte tre righe con i tre simboli

quadrato, rombo e triangolo colorati rispettivamente in

rosso, blu e verde con a fianco di ciascun simbolo il testo

uno, due e tre rispettivamente.

(38)

• Alcune opzioni delle funzioni grafiche (barplot, plot,...)

– xlim=c(..,..), ylim=c(..,..) per indicare i limiti degli assi – xlab="..", ylab=".." per le etichette degli assi

– main=".." per il titolo del grafico

– cex=.., cex.label=.., cex.main=.., cex.axis=.. per la di- mensione dei simboli, delle etichette degli assi, del titolo e dei valori degli assi (il default ` e 1)

– col="..", col.label="..", col.main="..", col.axis=".. "

per il colore

– font=..", font.label= .., font.main= ..", font.axis=.. per il tipo di carattere: 1=plain, 2=bold, 3=italic, 4=bold italic, 5=symbol

– pch=.. per i simboli dei punti; ad esempio 15, 17, 18, 19

sono i simboli quadrato, rombo, triangolo, pallino “pieni”;

(39)

– type=".."; p per i punti (` e il default); l per interpolazione lineare dei punti; o per sovrascrivere punti e linee; b, c punti (punti vuoti se c) uniti da linee; s, S a scalini (a destra o a sinistra); h linee verticale simili a istogrammi; n n´ e punti n´ e linee

– lwd=.. per la dimensione delle linee

– lty=.. per il tipo di linea; 1 ` e la linea unita (default), da 2 a 6 sono linee con vari tipi di tratteggio

Se alcune opzioni devono riguardare pi` u rappresentazioni grafiche,

si pu` o utilizzare l’istruzione par(...) con l’opzione di inter-

esse; per ripristinare le opzioni di default si utilizza l’istruzione

par(opar)

(40)

Per costruire scatter plot di due variabili quantitative, eviden- ziando i livelli di una una variabile qualitativa

plot(altezza~peso,pch=c(16,17)[genere],col=c("red", "blue")[genere])

Il numero di simboli e di colori deve corrispondere al numero di livelli della variabile qualitativa.

ATTENZIONE: la variabile qualitativa deve avere la struttura di

“fattore” oppure essere codificata con i primi numeri interi posi-

tivi. Se cos` ı non ` e bisogna scrivere [factor(genere)] o trasformare

preventivamente la variabile in fattore.

Riferimenti

Documenti correlati

Oggi la laicità della politica e l’autonomia della cultura sono punti fermi irrevocabili per qualsiasi collettività umana degna di tal nome; oggi, a giudizio

Solo dopo l’acquisto di Pisa e di Livorno, la città toscana potè però pensare al commercio diretto con l’Oriente inviando ambascerie (come quella del 1416

[r]

Nel seguito, si cercherà, se possibile, di appurare se l’idea (la Legge) sia predominante sullo strumento (la Tabella), o se, invece, quest’ultimo, fermo restando

Come si può notare, confrontando i grafici della figura 21, l’inibizione della sintesi proteica è un evento più precoce rispetto alla morte, in cellule trattate per 24 ore in

La figura mostra un esempio dei cambiamenti della temperatura delle zampe (Tzampa), della coda (Tcoda), della temperatura ipotalamica (Thy), della frequenza cardiaca (FC) e

In De l’esprit des lois Montesquieu shows that a multitude of variables in a society, including the laws, commerce, and religion, interact with one another to

11 Rientrano nella nozione di cruscotto aziendale o Tableau de bord diversi strumenti di Performance Management tra cui il sistema di performance measu- res, il