Array Multidimensionali in R

Un'altra struttura fondamentale che il linguaggio R ci mette a disposizione sono gli array multidimensionali. Gli array multidimensionali sono strutture dati che possono essere viste come il caso generale di vettori e matrici.

Un vettore, infatti, può essere visto come un array monodimensionale, mentre una matrice come un array bidimensionale. Un array multidimensionale, invece, è una struttura dati che può avere un numero arbitrario di dimensioni.

In questa lezione introduttiva sugli array multidimensionali in R ne daremo la definizione e vedremo come crearli e accedere alle loro dimensioni.

Array Multidimensionali

Il linguaggio R supporta nativamente sia i vettori che le matrici. Queste due strutture dati, che rappresentano anche specifici enti matematici, possono essere viste, nell'ambito del linguaggio R, come casi particolari di una struttura più generale, chiamata array multidimensionale.

In particolare, un vettore può essere visto come un array monodimensionale, mentre una matrice come un array bidimensionale. Un array multidimensionale, invece, è una struttura dati che può avere un numero arbitrario di dimensioni.

Semplificando, dal punto di vista del linguaggio, possiamo vedere una matrice come una collezione di vettori di uguale dimensione. Analogamente, un array multidimensionale può essere visto come una collezione di matrici di uguale dimensione.

Ad esempio, un array multidimensionale di dimensione 2 \times 3 \times 2 può essere rappresentato come una collezione di due matrici di dimensione 2 \times 3:

Esempio di Array Multidimensionale di dimensione 2 ⨉ 3 ⨉ 2
Figura 1: Esempio di Array Multidimensionale di dimensione 2 ⨉ 3 ⨉ 2

Nella figura di esempio possiamo vedere che l'array è composta da due matrici:

  1. La prima matrice ha dimensione 2 \times 3 e contiene i valori 8, 9, 2, 7, 3, 4:
\begin{bmatrix} 8 & 9 & 2 \\ 7 & 3 & 4 \end{bmatrix}
  1. La seconda matrice ha dimensione 2 \times 3 e contiene i valori 3, 1, 5, 7, 7, 6:
\begin{bmatrix} 3 & 1 & 5 \\ 7 & 7 & 6 \end{bmatrix}

Sotto i valori, in figura, sono stati riportati gli indici con cui identificare gli elementi dell'array multidimensionale. In particolare, l'array è stato indicizzato con tre indici: i, j e k.

Il primo indice rappresenta il numero di riga, il secondo indice rappresenta il numero di colonna e il terzo indice rappresenta il livello o layer dell'array.

Definizione

Array Tridimensionale in R

Un array tridimensionale in R è una struttura dati che può essere vista come una collezione di matrici di uguale dimensione.

Per individuare un elemento all'interno di un array tridimensionale, è necessario specificare tre indici:

  • l'indice di riga,
  • l'indice di colonna,
  • l'indice di livello o layer.

Analogamente, se si vogliono rappresentare array con più di tre dimensioni, sarà necessario specificare un numero maggiore di indici. In tal caso, gli indici superiori al terzo rappresenteranno ulteriori dimensioni dell'array e non hanno un nome specifico.

Creazione di Array Multidimensionali

In linguaggio R, per la creazione di un array multidimensionale si procede in maniera quasi identica alla creazione di una matrice. La differenza sta nel fatto che, anziché utilizzare la funzione matrix, dobbiamo adoperare la funzione array.

In particolare, la funzione array richiede due argomenti:

  1. data: un vettore contenente i valori da inserire nell'array,
  2. dim: un vettore contenente le dimensioni dell'array.

Analogamente al caso di matrix, la funzione array crea un array per colonne.

Proviamo, ad esempio, a creare l'array multidimensionale della figura di sopra:

> a <- array(data=c(8,7,9,3,2,4,3,7,1,7,5,6), dim=c(2, 3, 2))
> a
, , 1

     [,1] [,2] [,3]
[1,]    8    9    2
[2,]    7    3    4

, , 2

     [,1] [,2] [,3]
[1,]    3    1    5
[2,]    7    7    6

Notiamo due cose:

  • L'ordine degli indici passati al parametro dim è importante. In particolare, l'array è stato creato con dimensioni 2, 3, 2, quindi il primo indice rappresenta il numero di righe, il secondo indice rappresenta il numero di colonne e il terzo indice rappresenta il numero di livelli;
  • La funzione array ha creato l'array per colonne, quindi i valori sono stati inseriti per colonne.

Quando R ci mostra l'array, utilizza una notazione particolare per indicare gli indici. In particolare, ,,1 indica il primo livello dell'array, mentre ,,2 indica il secondo livello. Nel prompt, R ci mostra i singoli livelli in ordine.

Il numero totale di elementi dell'array dipende, ovviamente, dalle sue dimensioni. In particolare, il numero di elementi è dato dal prodotto delle dimensioni dell'array. Nel caso dell'array di esempio, il numero totale di elementi è 2 \times 3 \times 2 = 12. Pertanto, quando passiamo un vettore come parametro data alla funzione array dobbiamo assicurarci che il numero di elementi del vettore sia uguale al numero totale di elementi dell'array.

In caso contrario, quello che accade, così come per le matrici, è che R riutilizza i valori del vettore per completare l'array. Ad esempio, se passiamo un vettore di 10 elementi a un array di dimensione 2, 3, 2, R utilizzerà, dapprima, i 10 elementi per riempire le prime 10 posizioni dell'array e, successivamente, riutilizzerà i primi due valori per completare l'array. Ad esempio:

> a <- array(data=c(8,7,9,3,2,4,3,7,1,7), dim=c(2, 3, 2))
> a
, , 1

     [,1] [,2] [,3]
[1,]    8    9    2
[2,]    7    3    4

, , 2

     [,1] [,2] [,3]
[1,]    3    1    8
[2,]    7    7    7

Come si può vedere, nelle ultime due posizioni, [1, 3, 2] e [2, 3, 2], sono stati riutilizzati i primi due valori del vettore: 8 e 7.

Definizione

Creazione di un array multimensionale in R - funzione array

Per creare un array multidimensionale in R, si utilizza la funzione array con due argomenti:

  1. data: un vettore contenente i valori da inserire nell'array,
  2. dim: un vettore contenente le dimensioni dell'array.

La sintassi è la seguente:

array(data=vettore, dim=vettore_dimensioni)

La funzione array crea l'array per colonne.

Dimensioni di un Array Multidimensionale

Anche nel caso degli array, come per le matrici, per conoscerne la dimensione possiamo usare la funzione dim. Ad esempio, per conoscere le dimensioni dell'array a creato sopra, possiamo fare:

> dim(a)
[1] 2 3 2

Il risultato della funzione è sempre un vettore e, pertanto, possiamo utilizzare l'operatore [] per accedere alle singole dimensioni. Ad esemppio, per conoscere il numero di righe dell'array a, possiamo fare:

> dim(a)[1]
[1] 2
Definizione

Dimensioni di un array multidimensionale in R - funzione dim

Per conoscere le dimensioni di un array multidimensionale in R, si utilizza la funzione dim. La funzione restituisce un vettore contenente le dimensioni dell'array.

La sintassi è la seguente:

dim(array)

In Sintesi

In questa lezione introduttiva sugli array multidimensionali in R abbiamo visto:

  • Come un array multidimensionale possa essere visto come una collezione di matrici di uguale dimensione;
  • Come creare un array multidimensionale in R utilizzando la funzione array;
  • Come accedere alle dimensioni di un array multidimensionale utilizzando la funzione dim.

Nella prossima lezione, vedremo come accedere agli elementi di un array multidimensionale in R.