1. Introdução

Matrizes no R são objetos bidimensionais constituídos por linhas e colunas. Seus elementos assim como os vetores são apenas de um tipo, ou seja, matrizes no R podem ser constituídas unicamente por caracteres, números ou valores lógicos. Podemos construí-las utilizando quatro funções: matrix(), rbind(), cbind() e as.matrix(). A função matrix() é específica para criar matrizes, pois possui alguns atributos que fornece mais liberdade dos dados. A função rbind() e cbind() dá a possibilidade de criar matrizes mas o principal objetivo delas é unir linhas (row) e colunas (column) respectivamente, sendo assim, antes de executá-las teremos que criar vetores para poder juntar. Já a função as.matrix() transforma um objeto em matriz.

2. Objetivo

Criar matrizes com diferentes funções. Executar algumas operações para um melhor domínio desse tipo de objeto.

3. Protocolo

3.1. Criando marizes

Nessa primeira etapa vamos criar algumas matrizes com as quatro funções apresentadas anteriormente.

# criando matrizes utilizando a funcao matrix()
matriz_1 <- matrix(1:10)                                          # utilizando os parametros pradao da funcao
matriz_2 <- matrix(data = 1:10, nrow = 5, ncol = 2)               # trocando alguns parametros
matriz_3 <- matrix(data = 1:10, nrow = 5, ncol = 2, byrow = TRUE) # comecando com as linhas

# criando matrizes utilizando as funcoes rbind() e cbind()
vetor_1_mat <- c(1, 3, 5, 7)    # criando vetor_1
vetor_2_mat <- c(9, 11, 13, 15) # criando vetor_2

matriz_4 <- rbind(vetor_1_mat, vetor_2_mat) # juntando vetores com linhas
matriz_5 <- cbind(vetor_1_mat, vetor_2_mat) # juntando vetores com colunas

# criando matrizes utilizando a funcao as.matrix()
matriz_6 <- as.matrix(vetor_1_mat)
matriz_7 <- as.matrix(1:5)
matriz_8 <- as.matrix(c(1, 2, 8, 5, 6))
matriz_9 <- as.matrix(letters[1:10])

3.2. Acessando elementos de matrizes

Lembra de como acessamos os elementos de um vetor? em matrizes é pareceido, porém preciso informar a linha e a coluna desse elemento matriz_x[i,j], i = linha, j = coluna.

# acessando o primeiro elemento de uma matriz
matriz_8[1,1] # primeira linha e primeira coluna

# acessando a primeira linha de uma matriz
matriz_2[1,]

# acessando a segunda coluna de uma matriz
matriz_3[,2]

# acessando a terceira e quarta linha de uma matriz
matriz_2[3:4,]

3.3. Operações com matrizes

Abaixo coloquei algumas operações que podemos executar com matrizes.

# produto dos elementos de matrizes
matriz_2 * matriz_3

# subtracao de valores de matrizes
matriz_2[3,2] - matriz_3[4,1]

# alterando elemento
matriz_2[1,2] <- 11

# produto matricial
matriz_2 %*% matriz_4

# matriz transposta
t(matriz_3)

# determinante da matriz
det(matrix(c(1:4), ncol = 2))

Caso você queira conhecer mais a sua matriz abaixo segue alguns comandos básicos.

# dimensao da matriz
dim(matriz_2)

# num de colunas
ncol(matriz_2)

# num de linhas
nrow(matriz_2)

# diagonal
diag(matriz_3)

# testa se o objeto eh uma matriz
is.matrix(matriz_1)

# desconstroi uma matriz transformando-a em vetor
c(matriz_4)

3.3.1. Juntar matrizes

Também podemos juntar matrizes. Por exemplo: Um belo dia você fez um experimento e deixou pra terminar no outro dia e então você anotou os valores do primeiro dia e precisa unir os dados do segundo dia e todos na mesma matriz? você pode utilizar os comandos abaixo apresentados.

OBS: Se for unir matrizes pelas linhas, tais matrizes tem que ter o mesmo número de colunas e se for unir matrizes pelas colunas tais matrizes precisam ter o memsmo número de linhas.

# unindo matrizes pelas linhas
rbind(matriz_2, matriz_3)

# unindo matrizes pelas colunas
cbind(matriz_2, matriz_3)

3.4. Nomeando matrizes

Que tal nomearmos as linhas e colunas de nossas matrizes? Abaixo apresento alguns comandos para esse propósito. A função dimnames() nomeia linhas e colunas de uma matriz utilizando uma lista contendo os nomes referentes à linhas e colunas que deseja nomear. A função rownames() nomeia as linhas e a função colnames() nomeia as colunas da matriz.

# nomeando linhas e colunas
## a funcao list() cria uma lista
dimnames(matriz_2) <- list(c("Linha_1", "Linha_2", "Linha_3", "Linha_4", "Linha_5"),
                           c("Coluna_1", "Coluna_2")) 

# nomeando linhas
rownames(matriz_3) <- paste("Linha", 1:nrow(matriz_3), sep = "_") 

# nomeando colunas
colnames(matriz_3) <- paste("Coluna", 1:ncol(matriz_3), sep = "_")