Curso
Matrizes são objetos cujos elementos ficam organizados em uma estrutura bidimensional, geralmente com números, para realizar diversos tipos de cálculo.
Por exemplo, veja a matriz abaixo.
[,1] [,2] [,3]
[1,] 5 6 7
[2,] 8 9 10
[3,] 11 12 13
A matriz acima tem 3 linhas e 3 colunas.
Em R, uma matriz pode ser criada com a função "matrix()".
A sintaxe de uma matriz em R pode ser definida assim:
matrix(value, nrow, ncol, byrow, dimnames)
Os parâmetros da função são:
- value - especifica o vetor de entrada; cada elemento do vetor compõe a matriz.
- nrow - define o número de linhas da matriz.
- ncol - define o número de colunas da matriz.
- byrow - valor booleano TRUE ou FALSE. Se TRUE, os elementos são preenchidos por linha; se FALSE, por coluna.
- dimnames - define os nomes das linhas e colunas da matriz.
Veja o exemplo abaixo: "mat" é o nome da matriz, com um vetor dentro de c contendo os valores 8, 4, 5, 6, 7, 9. Também definimos o número de linhas ("nrow") como 2 e de colunas ("ncol") como 3, ou seja, a dimensão da matriz é 2 × 3. Os elementos são preenchidos por linha (byrow = TRUE), então o vetor é distribuído linha a linha.
mat = matrix(c(8,4,5,6,7,9),nrow = 2, ncol = 3,byrow = TRUE)
print(mat)
A saída do código é mostrada abaixo: há três colunas e duas linhas, com os elementos preenchidos por linha.
[,1] [,2] [,3]
[1,] 8 4 5
[2,] 6 7 9
Nomeando linhas e colunas
Vamos criar uma matriz com elementos de 1 a 9 e 3 linhas. Também vamos nomear linhas e colunas com vetores de r1 a r3 e de c1 a c3.
mat <- matrix(1:9, nrow = 3,dimnames = list(c("r1","r2","r3"), c("c1","c2","c3")))
mat
c1 c2 c3
r1 1 4 7
r2 2 5 8
r3 3 6 9
A saída acima mostra que os elementos de 1 a 9 foram preenchidos por coluna. As linhas e colunas foram rotuladas de r1 a r3 e de c1 a c3.
Acessando elementos em uma matriz
A matriz abaixo se chama "mat" e tem 3 linhas e 3 colunas.
c1 c2 c3
r1 1 4 7
r2 2 5 8
r3 3 6 9
Para acessar elementos individualmente, use o nome da matriz seguido de colchetes com a posição de linha e coluna.
- Para acessar o elemento 5 da matriz:
mat[2,2] - Para acessar o elemento 6 da matriz:
mat[3,2] - Para acessar toda a primeira coluna, isto é, [1 2 3]:
mat[,1] - Para acessar toda a segunda linha, isto é, [2 5 8]:
mat[2,]
Operações com matrizes
Adição e subtração de matrizes
Condição: Para somar ou subtrair matrizes, elas precisam ter a mesma dimensão, com o mesmo número de linhas e colunas. Por exemplo:
As matrizes abaixo, mat1 e mat2, têm dimensão 3 × 3: três linhas e três colunas, iguais em ambas.
mat1 <- matrix(c(5,10,15,20,25,30,35,40,45), nrow = 3)
print(mat1)
mat2 <- matrix(c(50,55,60,65,70,75,80,85,90), nrow = 3)
print(mat2)
[,1] [,2] [,3]
[1,] 5 20 35
[2,] 10 25 40
[3,] 15 30 45
[,1] [,2] [,3]
[1,] 50 65 80
[2,] 55 70 85
[3,] 60 75 90
Acima, cada matriz foi impressa com os elementos preenchidos por coluna.
add_output <- mat1 + mat2
cat("Addition","\n")
print(add_output)
sub_output <- mat1 - mat2
cat("Subtraction","\n")
print(sub_output)
Addition
[,1] [,2] [,3]
[1,] 55 85 115
[2,] 65 95 125
[3,] 75 105 135
Subtraction
[,1] [,2] [,3]
[1,] -45 -45 -45
[2,] -45 -45 -45
[3,] -45 -45 -45
Na soma e na subtração de matrizes, os elementos são combinados posição a posição. Por exemplo, na adição, o elemento da linha 1, coluna 1 de mat1 (5) é somado ao elemento da linha 1, coluna 1 de mat2 (50), resultando em 55. O mesmo vale para todas as posições, tanto na soma quanto na subtração.
Multiplicação e divisão de matrizes
Condição: para multiplicação e divisão elemento a elemento, as matrizes precisam ter o mesmo número de linhas e colunas, ou seja, dimensões iguais.
Multiplicação de matrizes
Veja o exemplo abaixo: duas matrizes, mat1 e mat2, ambas com três linhas e duas colunas. Há seis elementos em cada uma, preenchidos por coluna, e a dimensão de cada matriz é 3 × 2.
mat1<- matrix(c(2,4,6,8,10,12), nrow = 3,ncol =2)
print(mat1)
mat2 <- matrix(c(14,16,18,20,22,24), nrow = 3,ncol=2)
print(mat2)
final <- mat1 * mat2
print('------------------')
cat("Multiplication","\n")
print(final)
[,1] [,2]
[1,] 2 8
[2,] 4 10
[3,] 6 12
[,1] [,2]
[1,] 14 20
[2,] 16 22
[3,] 18 24
-----------------
Multiplication
[,1] [,2]
[1,] 28 160
[2,] 64 220
[3,] 108 288
Na multiplicação acima, cada elemento de mat1 é multiplicado pelo elemento correspondente de mat2. Por exemplo, "mat1[1][1]" (2) é multiplicado por "mat2[1][1]" (14), resultando em 28. O processo se repete para todas as posições; por fim, em "mat1[3][2]" (12) e "mat2[3][2]" (24), o resultado é 288.
Divisão de matrizes
Agora, o mesmo cenário com divisão elemento a elemento: duas matrizes mat1 e mat2 com três linhas e duas colunas (3 × 2), preenchidas por coluna.
mat1<- matrix(c(2,4,6,8,10,12), nrow = 3,ncol =2)
print(mat1)
mat2 <- matrix(c(14,16,18,20,22,24), nrow = 3,ncol=2)
print(mat2)
final <- mat1 / mat2
print('--------------')
cat("Division","\n")
print(final)
[,1] [,2]
[1,] 2 8
[2,] 4 10
[3,] 6 12
[,1] [,2]
[1,] 14 20
[2,] 16 22
[3,] 18 24
--------------
Division
[,1] [,2]
[1,] 0.1428571 0.4000000
[2,] 0.2500000 0.4545455
[3,] 0.3333333 0.5000000
Na divisão acima, cada elemento de mat1 é dividido pelo elemento correspondente de mat2. Por exemplo, "mat1[1][1]" (2) dividido por "mat2[1][1]" (14) resulta em 0.1428571. O mesmo se aplica às demais posições; por fim, em "mat1[3][2]" (12) e "mat2[3][2]" (24), o resultado é 0.5000000.
Parabéns
Parabéns, você chegou ao final deste tutorial!
Nele, você aprendeu tudo sobre a matriz em R: como nomear linhas e colunas, acessar elementos e realizar operações como adição, subtração, multiplicação e divisão.
Se quiser aprender mais sobre R, faça o curso Introduction to R da DataCamp.
