1em Breve introduzione al linguaggio R

Breve introduzione al
linguaggio R
L'ambiente R Studio
Davide Massidda
www.insular.it
Università di Cagliari, a.a. 2013/2014
R è una calcolatrice!
Inserire commenti
L'utente invia un comando in input; dall'altra parte, un interprete legge
R accetta come input anche dei commenti: tutto ciò che segue il simbolo
l'istruzione, elabora la risposta e fornisce un output.
> 2+2
[1] 4
> 2*2
[1] 4
> 3^5
[1] 243
> 7+(3-4)
[1] 6
#
non viene interpretato come comando.
> Voglio creare un bel grafico con R
Errore: unexpected symbol in Voglio creare
> # Come creare un bel grafico con R?
> # ...aspetta e vedrai :-)
> 2+2 # calcola due più due
[1] 4
L'operazione di assegnazione
Il comando <-
Gli script
permette di assegnare un valore a un oggetto:
Uno script è un le testuale che contiene le istruzioni da eseguire nel
terminale. Perché venga riconosciuto come script R, un le deve essere
> x <- 2
> x
[1] 2
salvato con estensione
.R
. Gli script possono essere anche creati e aperti
con editor di testi esterni (es. Notepad++).
Un oggetto può contenere non solo numeri ma anche stringhe di caratteri:
> corso <- psicometria
> corso
[1] psicometria
oppure valori logici:
> x1 <- TRUE
> x1
[1] TRUE
> x2 <- FALSE
> x2
[1] FALSE
> x1 + x2
[1] 1
Gestire uno script
Operazioni con gli oggetti
> a <- 2 ; b <- 7
> somma <- a+b
> somma
[1] 9
Nota: il ; consente di inserire più comandi su una stessa riga.
> x <- 3
> somma^(x-1)
[1] 81
Per aprire in R Studio uno script precedentemente creato:
File > Open File...
> x <- sqrt(2)
> x
[1] 1.414214
> x <- log(2)
> x
[1] 0.6931472
> x <- abs(-2)
> x
[1] 2
> x <- exp(2)
> x
[1] 7.389056
Le funzioni
Le funzioni
Funzione logaritmo
Funzione logaritmo
log(x base
,
)
Gli argomenti di una funzione vanno sempre racchiusi tra
tonde
log(x base
= exp(1)
,
parentesi
.
Alcuni argomenti sono obbligatori, altri opzionali.
> log(x=2)
[1] 0.6931472
Le funzioni
> log(x=2, base=10)
[1] 0.30103
> log(2, 10)
[1] 0.30103
> log(base=10, x=2)
[1] 0.30103
> log(10, 2)
[1] 3.321928
Tradurre in linguaggio R le seguenti espressioni
Es.1 (risultato: 0.6)
Funzione logaritmo
,
I nomi degli argomenti possono anche essere omessi...
...attenzione però all'ordine con cui vengono inseriti!
> log(base=10)
Errore in log(base = 10) :
supplied argument name 'base' does not match 'x'
log(x base
)
= exp(1)
)
= exp(1)
> 2*(4/5)-1
2
Un oggetto può essere utilizzato per passare un argomento a una
> a
> b
> x
> x
[1]
funzione.
Es.2 (risultato: 3)
<- 2
<- 7+3
<- log(a, base=b)
> 3*(7-(5+1))
4
1
5
3 [7
(5 + 1)]
Es.3 (risultato: 1.975332)
0.30103
> (log(3/2)+1)^2
3
2
ln
2
+1
Tradurre in linguaggio R le seguenti espressioni
Es.1 (risultato: 0.6)
...e se dovesse servire aiuto?
Quando abbiamo dicoltà con l'uso di un comando o siamo alla ricerca di
una funzione per eettuare una specica operazione, possiamo consultare
> 2*(4/5)-1
la documentazione.
2
4
> ?log
1
5
> ??log
Es.2 (risultato: 3)
> help.start()
> 3*(7-(5+1))
3 [7
(5 + 1)]
Es.3 (risultato: 1.975332)
> (log(3/2)+1)^2
3
2
ln
2
+1
I vettori
Operazioni con i vettori
Un oggetto può contenere non solo un singolo valore, ma anche una
concatenzazione di valori. La funzione
c()
serve a concatenare tra loro
gli elementi che vengono forniti come argomento (che devono essere tutti
dello stesso tipo).
> y <- c(25,-22,32,0,12)
> y
[1] 25 -22 32 0 12
> corsi <- c(psicometria,inglese,psicologia generale)
> corsi
[1] psicometria inglese psicologia generale
> length(y)
> length(corsi)
[1] 5
[1] 3
Nota bene
: con il generico termine vettore, in R, non si fa riferimento
alla nozione di vettore usuale nell'algebra lineare, ma semplicemente a un
insieme di valori consecutivi.
Qualche esempio:
> y <- c(25,-22,32,0,12)
> y + 100
[1] 125 78 132 100 112
> y ^ 2
[1] 625
484 1024
> sum(y)
[1] 47
> mean(y)
[1] 9.4
> sd(y)
[1] 21.41962
0
144
Costruire successioni numeriche
Costruire vettori contenenti repliche
Generazione di sequenze
Replicazione di valori
seq(from to by)
,
rep(x times
,
,
from
to
by
x
times
length.out
each
: limite inferiore.
> seq(-2,2,0.5)
[1] -2.0 -1.5 -1.0 -0.5 0.0 0.5 1.0 1.5 2.0
3
4
5
6
7
8
9 10
Estrazione di valori
Utilizzando le
parentesi quadre
, è possibile accedere ai singoli dati con-
> x <- c(2, 3, 1, 6, 9.7)
> x[4]
[1] 6
Attenzione a non confondere l'indice, ovvero la
( )
[ ]
valore
= 1
: lunghezza del vettore in output.
> rep(2,5)
[1] 2 2 2 2 2
> rep(pippo,3)
[1] pippo pippo pippo
> rep(c(1,5,10),times=2)
[1] 1 5 10 1 5 10
> rep(c(1,5,10),each=2)
[1] 1 1 5 5 10 10
Estrazione di valori
tenuti in un vettore.
si trova (4) con il
each )
: quante volte replicare ogni singolo valore del vettore.
> seq(0,20,2)
[1] 0 2 4 6 8 10 12 14 16 18 20
2
= NA,
: quante volte replicare il valore/vettore.
: passo.
1
length.out
: valore o vettore da replicare.
: limite superiore.
> 0:10
[1] 0
= 1,
posizione
in cui il valore
localizzato in quella posizione (6).
Le parentesi tonde racchiudono gli argomenti di una funzione.
Le parentesi quadre si utilizzano per accedere agli elementi contenuti
> x <- c(2, 3, 1, 6, 9.7)
> pos <- c(2,4)
> x[pos]
[1] 3 6
> x[length(x)] # valore in ultima posizione
[1] 9.7
> x[length(x)-1] # valore in penultima posizione
[1] 6
in un vettore.
> pos <- c(length(x)-1,2)
> x[pos]
[1] 6 3
Sostituzione / eliminazione di valori
Esercitazione
1
> x <- c(2, 3, 1, 6, 9.7)
> x[2] <- 99 # sostituzione del 2 valore
> x
[1] 2.0 99.0 1.0 6.0 9.7
> x <- x[-2] # eliminazione del 2 valore
> x
[1] 2.0 1.0 6.0 9.7
> y <- x[-c(1,4)] # eliminazione del 1 e 4 valore
> y
[1] 1 6
> z <- c(pippo,pluto,topolino)
> z <- z[-2]
> z
[1] pippo topolino
Utilizzando anche il comando
rep(),
costruire un vettore
x
conte-
nente i numeri: 43, 12, 76, 23, 12, 89, 12, 9, 9, 9, 9.
x <- c(43, 12, 76, 23, 12, 89, 12, rep(9,4))
2
Calcolare il logaritmo naturale del 5
valore di x.
log(x[5])
y contenente
y <- x[c(1,3,length(x))]
3
Creare un vettore
4
Sostituire il 3
valore di
y[3] <- 99
5
Calcolare la media di
mean(y)
6
y
il 1 , il 3
e l'ultimo valore di
col valore 99.
y.
Calcolare la deviazione standard dei primi cinque valori di
sd(x[1:5])
rep(),
costruire un vettore
x
conte-
nente i numeri: 43, 12, 76, 23, 12, 89, 12, 9, 9, 9, 9.
Esercitazione
1
Utilizzando anche il comando
x.
x.
valore di x.
2
Calcolare il logaritmo naturale del 5
3
Creare un vettore
4
Sostituire il 3
5
Calcolare la media di
6
Calcolare la deviazione standard dei primi cinque valori di
y
contenente il 1 , il 3
valore di
y
e l'ultimo valore di
col valore 99.
y.
x.
x.