Arrays

Linguagem R

Enquanto os vetores são unidimensionais e as matrizes são bidimensionais, os arrays podem ter qualquer número de dimensões. As dimensões são os índices das matrizes, ou seja, os arrays são conjuntos de matrizes ordenadas.

Como primeiro exemplo vamos criar um cubo tridimensional com três linhas e três colunas e elementos na faixa de 1 a 27:

> cubo <- array(1:27, dim=c(3,3,3))
> cubo # Mostrar todas as matrizes do array cubo
, , 1

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

, , 2

     [,1] [,2] [,3]
[1,]   10   13   16
[2,]   11   14   17
[3,]   12   15   18

, , 3

     [,1] [,2] [,3]
[1,]   19   22   25
[2,]   20   23   26
[3,]   21   24   27

> class(cubo)     # Classe
[1] "array"
> typeof(cubo)    # Tipo de dados
[1] "integer"
> str(cubo)       # Estrutura
 int [1:3, 1:3, 1:3] 1 2 3 4 5 6 7 8 9 10 ...
> dim(cubo)       # Dimensões
[1] 3 3 3
> length(cubo)    # Elementos
[1] 27

Nos exemplos abaixo o cubo é fatiado:

> cubo[2,,2] # Colunas da segunda linha da segunda matriz
[1] 11 14 17
> class(cubo[2,,2])
[1] "integer"
> cubo[,2,] # Linhas da segunda coluna de todas as matrizes
     [,1] [,2] [,3]
[1,]    4   13   22
[2,]    5   14   23
[3,]    6   15   24
> class(cubo[,2,])
[1] "matrix"
> dim(cubo[,2,])
[1] 3 3

Podem ser atribuídos nomes às linhas, colunas e matrizes do array:

> dimnames(cubo) = list(
+     c("R1", "R2", "R3"),  # nomes das linhas
+     c("C1", "C2", "C3"),  # nomes das colunas
+     c("M1", "M2", "M3"))  # nomes das matrizes
> cubo # Mostrar todas as matrizes do array cubo
, , M1

   C1 C2 C3
R1  1  4  7
R2  2  5  8
R3  3  6  9

, , M2

   C1 C2 C3
R1 10 13 16
R2 11 14 17
R3 12 15 18

, , M3

   C1 C2 C3
R1 19 22 25
R2 20 23 26
R3 21 24 27

e os elementos do array podem ser acessados pelos nomes das linhas, das colunas e das matrizes:

> cubo["R2",,"M2"] # Colunas da segunda linha da segunda matriz
C1 C2 C3 
11 14 17 
> cubo[,"C2",] # Linhas da segunda coluna de todas as matrizes
   M1 M2 M3
R1  4 13 22
R2  5 14 23
R3  6 15 24
Leia mais