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 6In questo caso i valori
7e8sono 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 3In 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 prefissorsta per row (riga).cbind(): prende in ingresso i vettori e li dispone per colonne. Il prefissocsta 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
cbinderbind. - La funzione
dim()permette di conoscere la dimensione di una matrice.
Nella prossima lezione vedremo come accedere agli elementi di una matrice in R.