Creazione di Matrici in R
In questa lezione inizieremo a studiare la seconda struttura dati fondamentale di R: le matrici.
In particolare, vedremo come creare una matrice in R, partendo da un vettore di valori o da più vettori di valori.
Creazione di Matrici in R
Le matrici sono un importante strumento matematico e statistico. Per tal motivo R offre la possibilità di lavorare con esse in maniera diretta e semplice.
Ad un primo sguardo, una matrice può essere considerata come una disposizione di valori in forma tabellare, ossia disposti per righe e colonne.
In generale una matrice viene descritta come matrice
Per cui una matrice può essere espressa come:
ed i singoli elementi di
La notazione comune è quella di usare lettere dell'alfabeto maiuscole per rappresentare le matrici, mentre lettere minuscole per rappresentare gli elementi di una matrice.
Per creare una matrice in R si utilizza la funzione matrix()
. Questa funzione prende in ingresso un vettore di valori, un numero di righe e un numero di colonne. In uscita si ottiene una matrice con i valori disposti per colonne.
Per chiarire vediamo un esempio. Supponiamo di voler creare una matrice
In R possiamo creare tale matrice con il seguente comando:
> matrice <- matrix(c(1, 2, 3, 4, 5, 6), nrow = 2, ncol = 3)
> matrice
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
Alla funzione matrix
abbiamo passato il vettore di valori c(1, 2, 3, 4, 5, 6)
, il numero di righe nrow = 2
e il numero di colonne ncol = 3
. Da notare che gli elementi del vettore sono stati disposti per colonne. In altri termini, i primi due valori del vettore sono stati disposti nella prima colonna, i successivi due nella seconda colonna e così via.
I parametri nrow
e ncol
sono opzionali. Se non vengono specificati, la funzione matrix
crea una matrice con un numero di righe pari alla lunghezza del vettore e un numero di colonne pari a 1.
> matrice <- matrix(c(1, 2, 3, 4, 5, 6))
> matrice
[,1]
[1,] 1
[2,] 2
[3,] 3
[4,] 4
[5,] 5
[6,] 6
In questo caso la matrice creata è
Ovviamente, quando specifichiamo nrow
e ncol
dobbiamo assicurarci che il numero di elementi del vettore sia compatibile con il numero di righe e colonne richiesti.
In caso contrario possono verificarsi due eventualità:
-
Se il numero di elementi del vettore è maggiore del numero di elementi della matrice, i valori in eccesso vengono scartati. Ad esempio:
> matrice <- matrix(c(1, 2, 3, 4, 5, 6, 7, 8), nrow = 2, ncol = 3) Warning message: In matrix(c(1, 2, 3, 4, 5, 6, 7, 8), nrow = 2, ncol = 3) : data length [8] is not a sub-multiple or multiple of the number of columns [3] > matrice [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6
In questo caso i valori
7
e8
sono stati scartati. -
Se il numero di elementi del vettore è minore del numero di elementi della matrice, R ripete il vettore fino a riempire la matrice. Ad esempio:
> matrice <- matrix(c(1, 2, 3, 4), nrow = 2, ncol = 3) Warning message: In matrix(c(1, 2, 3, 4), nrow = 2, ncol = 3) : data length [4] is not a sub-multiple or multiple of the number of columns [3] > matrice [,1] [,2] [,3] [1,] 1 3 2 [2,] 2 4 3
In questo caso, dato che il vettore ha solo 4 elementi, R ha potuto riempire solo le prime due colonne. Successivamente ha ripetuto il vettore per riempire la terza colonna.
Da notare che in entrambi i casi R ha generato un messaggio di avviso. Questo è utile per capire se la matrice è stata creata correttamente o meno.
Creazione di una matrice in R - funzione matrix()
La funzione matrix()
permette di creare una matrice in R. I parametri richiesti sono:
data
: il vettore di valori da disporre nella matrice.nrow
: il numero di righe della matrice.ncol
: il numero di colonne della matrice.
La sintassi è la seguente:
matrix(data=vettore, nrow=numero_righe, ncol=numero_colonne)
Se i parametri nrow
e ncol
non vengono specificati, la funzione crea una matrice con un numero di righe pari alla lunghezza del vettore e un numero di colonne pari a 1.
Direzione di Disposizione dei Valori
Abbiamo già accennato che la funzione matrix()
dispone i valori per colonne. Questo significa che, nel creare una matrice
In R è possibile modificare questo comportamento di matrix
specificando il parametro byrow = TRUE
. In questo modo i valori vengono disposti per righe.
Ad esempio, supponendo di voler creare la matrice
Possiamo farlo con il seguente comando:
> matrice <- matrix(c(1, 2, 3, 4, 5, 6), nrow = 2, ncol = 3, byrow = TRUE)
> matrice
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
In questo caso i valori sono stati disposti per righe.
Il comportamento di default di matrix
è byrow = FALSE
.
Direzione di Disposizione dei Valori - parametro byrow
Il parametro byrow
della funzione matrix()
permette di specificare la direzione di disposizione dei valori. I valori ammessi sono TRUE
e FALSE
. Se byrow = TRUE
, i valori vengono disposti per righe, altrimenti per colonne.
Creazione di Matrici a partire da vettori multipli
Nei paragrafi precedenti abbiamo visto come creare matrici a partire da un singolo vettore di elementi.
In R è possibile creare matrici a partire da più vettori di elementi. Questo è possibile grazie alla funzione cbind()
e rbind()
.
Questa esigenza nasce spesso quando abbiamo più vettori ciascuno dei quali rappresenta una colonna o una riga della matrice.
Ad esempio, supponiamo di avere due vettori di 3 elementi ciascuno:
riga1 <- c(1, 2, 3)
riga2 <- c(4, 5, 6)
Possiamo creare una matrice
> matrice <- rbind(riga1, riga2)
> matrice
[,1] [,2] [,3]
riga1 1 2 3
riga2 4 5 6
In questo caso abbiamo utilizzato la funzione rbind()
che prende in ingresso i vettori riga1
e riga2
e li dispone per righe.
Se invece volessimo creare una matrice cbind()
:
> matrice <- cbind(riga1, riga2)
> matrice
riga1 riga2
[1,] 1 4
[2,] 2 5
[3,] 3 6
Creazione di Matrici a partire da vettori multipli - funzioni cbind()
e rbind()
Le funzioni cbind()
e rbind()
permettono di creare matrici a partire da più vettori di elementi.
rbind()
: prende in ingresso i vettori e li dispone per righe. Il prefissor
sta per row (riga).cbind()
: prende in ingresso i vettori e li dispone per colonne. Il prefissoc
sta per column (colonna).
Dimensione di una Matrice
Per conoscere la dimensione di una matrice possiamo utilizzare la funzione dim()
. Questa funzione restituisce un vettore con due elementi: il primo rappresenta il numero di righe e il secondo il numero di colonne.
Ad esempio, supponiamo di avere la matrice:
> matrice <- matrix(c(1, 2, 3, 4, 5, 6), nrow = 2, ncol = 3)
> matrice
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
Possiamo conoscere la dimensione di matrice
con il comando:
> dim(matrice)
[1] 2 3
Il vettore restituito da dim()
ci dice che matrice
ha 2 righe e 3 colonne.
Essendo un vettore, possiamo accedere ai singoli elementi di dim()
tramite gli indici. Ad esempio, per conoscere il numero di righe possiamo scrivere:
> dim(matrice)[1]
[1] 2
e per conoscere il numero di colonne:
> dim(matrice)[2]
[1] 3
Dimensione di una Matrice - funzione dim()
La funzione dim()
permette di conoscere la dimensione di una matrice. Restituisce un vettore con due elementi: il primo rappresenta il numero di righe e il secondo il numero di colonne.
La sintassi è la seguente:
dim(matrice)
In Sintesi
In questa lezione abbiamo studiato che:
- Una matrice è una struttura dati fondamentale di R.
- Per creare una matrice si utilizza la funzione
matrix()
. - La funzione
matrix()
prende in ingresso un vettore di valori, un numero di righe e un numero di colonne. - La funzione
matrix()
dispone i valori per colonne, ma è possibile specificare la direzione di disposizione dei valori con il parametrobyrow
. - È possibile creare matrici a partire da più vettori di elementi con le funzioni
cbind
erbind
. - La funzione
dim()
permette di conoscere la dimensione di una matrice.
Nella prossima lezione vedremo come accedere agli elementi di una matrice in R.