Una breve introduzione a R
Eva Riccomagno, Maria Piera Rogantin
DIMA – Universit`a di Genova
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/
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, ...
• 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
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!!!
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
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
• 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)
• 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
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
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.
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!)
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
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"))
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 ...
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"
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)
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
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=" ")
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")
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]
• 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]
• Selezionare un sottoinsieme di righe identificate dai valori di una variabile (applicare filtri)
–
dataM2= subset(data,gender=="m");dataM2 type gender q1 q2 q3 q45 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 q4NA 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
• 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
• 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
• 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
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
• 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"
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
- 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
- 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
• 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.
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)}
• 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
• 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
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(..))
– 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.
• 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”;
– 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)
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])