English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Arrays em R

Os arrays também são objetos em R, e R pode criar arrays unidimensionais ou multidimensionais.

Os arrays em R são conjuntos de tipos de dados idênticos, e a matriz matrix que aprendemos anteriormente é realmente um array bidimensional.

A relação entre vetores, matrizes e arrays pode ser vista na figura a seguir:

A criação de arrays em R usa a função array(), que usa vetores como parâmetros de entrada e pode usar dim para definir a dimensão do array.

A sintaxe do formato da função array() é a seguinte:

array(data = NA, dim = length(data), dimnames = NULL)

Descrição dos Parâmetros:

  • Vetor data, elementos do array.

  • Dimensões do array, por padrão é um array unidimensional.

  • Os nomes das dimensões do dimnames devem ser uma lista, por padrão, não há configuração de nomes.

Neste exemplo, criamos um 3 Linhas 3 Array bidimensional de colunas:

# Criação de dois vetores de diferentes tamanhos
vector1 <- c(5,9,3)
vector2 <- c(10,11,12,13,14,15)
# Criação de array
result <- array(c(vector1,vector2),dim = c(3,3,2))
print(result)

O resultado da execução do código acima é:

, , 1
     [[1]] [,2]] [,3]
[1,]    5   10   13
[2,]    9   11   14
[3,]    3   12   15
, , 2
     [[1]] [,2]] [,3]
[1,]    5   10   13
[2,]    9   11   14
[3,]    3   12   15

Use o parâmetro dimnames para configurar os nomes das dimensões::

# Criação de dois vetores de diferentes tamanhos
vector1 <- c(5,9,3)
vector2 <- c(10,11,12,13,14,15)
nomes <- c("COL1","COLUNA2","COLUNA3")
row.names <- c("LINHA1","LINHA2","LINHA3")
matrix.names <- c("Matrix1","Matrix2")
# Criação de array, e configuração dos nomes das dimensões
result <- array(c(vector1,vector2),dim = c(3,3,2),dimnames = list(row.names,column.names,matrix.names))
print(result)

O resultado da execução do código acima é:

, , Matrix1
     COLUNA1 COLUNA2 COLUNA3
LINHA1    5   10   13
LINHA2    9   11   14
LINHA3    3   12   15
, , Matrix2
     COLUNA1 COLUNA2 COLUNA3
LINHA1    5   10   13
LINHA2    9   11   14
LINHA3    3   12   15

Acesso a elementos de array

Se quiser obter elementos de um array, pode usar o índice de coluna e linha do elemento, similar a um sistema de coordenadas.

# Criação de dois vetores de diferentes tamanhos
vector1 <- c(5,9,3)
vector2 <- c(10,11,12,13,14,15)
nomes <- c("COL1","COLUNA2","COLUNA3")
row.names <- c("LINHA1","LINHA2","LINHA3")
matrix.names <- c("Matrix1","Matrix2")
# Criação de array
result <- array(c(vector1,vector2),dim = c(3,3,2),dimnames = list(row.names, column.names, matrix.names))
# Exibir o elemento da terceira linha da segunda matriz do array
print(result[3,,,2])
# Exibir o elemento da terceira coluna da primeira linha da primeira matriz do array
print(result[1,3,1])
# Output da Segunda Matriz
print(result[,,2])

O resultado da execução do código acima é:

COLUNA1 COLUNA2 COLUNA3 
   3   12   15 
[1] 13
     COLUNA1 COLUNA2 COLUNA3
LINHA1    5   10   13
LINHA2    9   11   14
LINHA3    3   12   15

Operação de Elementos do Array

Como o array é composto por várias matrizes dimensionais, podemos acessar elementos do array através de elementos de matrizes.

# Criação de dois vetores de diferentes tamanhos
vector1 <- c(5,9,3)
vector2 <- c(10,11,12,13,14,15)
# Criação de array
array1 <- array(c(vector1,vector2),dim = c(3,3,2))
# Criação de dois vetores de diferentes tamanhos
vector3 <- c(9,1,0)
vector4 <- c(6,0,11,3,14,1,2,6,9)
array2 <- array(c(vector1,vector2),dim = c(3,3,2))
# Criação de Matriz a partir de Array
matrix1 <- array1[,,2]
matrix2 <- array2[,,2]
# Adição de Matrizes
result <- matrix1+matrix2
print(result)

O resultado da execução do código acima é:

     [[1]] [,2]] [,3]
[1,]   10   20   26
[2,]   18   22   28
[3,]    6   24   30

Além disso, podemos usar apply() Elementos realizam cálculos transdimensionais em elementos do array, formatando-se conforme a seguir:

apply(x, margem, fun)

Descrição dos Parâmetros:

  • x  Array

  • Margem Nome dos Dados

  • fun Função de Cálculo

A seguir, usamos a função apply() para calcular a soma dos números de cada linha de duas matrizes do array.

# Criação de dois vetores de diferentes tamanhos
vector1 <- c(5,9,3)
vector2 <- c(10,11,12,13,14,15)
# Criação de array
new.array <- array(c(vector1,vector2),dim = c(3,3,2))
print(new.array)
# Soma dos números da primeira linha de todas as matrizes do array
result <- apply(new.array, c(1), sum)
print(result)

O resultado da execução do código acima é:

, , 1
     [[1]] [,2]] [,3]
[1,]    5   10   13
[2,]    9   11   14
[3,]    3   12   15
, , 2
     [[1]] [,2]] [,3]
[1,]    5   10   13
[2,]    9   11   14
[3,]    3   12   15