0Pricing
R Academy · Aula

Aritmética e operações com matrizes

Execute multiplicação elemento a elemento e matricial, adição e subtração.

Aritmética e operações com matrizes é uma aula grátis de R Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de R Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de R Academy inclui 4 aulas no total.

Operações elemento a elemento versus operações matriciais

O R diferencia operações elemento a elemento (usando +, -, *, /) de verdadeiras operações matriciais (usando %*%). Entender essa diferença é essencial para realizar álgebra linear corretamente.

A <- matrix(c(1,2,3,4), nrow = 2)
B <- matrix(c(5,6,7,8), nrow = 2)
cat('A:
'); print(A)
cat('B:
'); print(B)

# Element-wise multiply
cat('A * B (element-wise):
'); print(A * B)
# Matrix multiply
cat('A %*% B (matrix mult):
'); print(A %*% B)

Adição e subtração elemento a elemento

+ e - entre duas matrizes com as mesmas dimensões adicionam ou subtraem os elementos correspondentes. Essas são operações puramente elemento a elemento.

# Monthly revenue vs target (in thousands)
revenue <- matrix(c(120,135,110,98, 145,160,132,115),
                  nrow = 2, byrow = TRUE)
target  <- matrix(c(130,130,130,130, 150,150,150,150),
                  nrow = 2, byrow = TRUE)

deviation <- revenue - target
cat('Revenue vs Target deviation:
')
print(deviation)
cat('Above target?:
')
print(revenue >= target)

Divisão e multiplicação elemento a elemento

Da mesma forma, * e / entre matrizes de mesmo tamanho operam elemento a elemento. Isso é útil para dimensionar, normalizar ou combinar matrizes elemento a elemento.

# Scale a matrix by another (element-wise)
prices <- matrix(c(10, 20, 15, 25), nrow = 2)
quantities <- matrix(c(5, 3, 8, 2), nrow = 2)

total_cost <- prices * quantities
cat('Total cost per item:
')
print(total_cost)

# Normalise to row maximum
max_prices <- matrix(rep(apply(prices, 1, max), 2), nrow = 2)
norm_prices <- prices / max_prices
cat('Normalised prices:
')
print(norm_prices)

Operações escalares em matrizes

Você pode aplicar uma operação com um escalar (um único número) a todos os elementos de uma matriz usando operadores aritméticos padrão. O escalar é reciclado para corresponder às dimensões da matriz.

m <- matrix(c(10, 20, 30, 40, 50, 60), nrow = 2, ncol = 3)
cat('Original:
'); print(m)

cat('m + 5:
');  print(m + 5)
cat('m * 2:
');  print(m * 2)
cat('m / 10:
'); print(m / 10)
cat('m ^ 2:
');  print(m ^ 2)

Multiplicação matricial verdadeira %*%

A %*% B realiza a multiplicação matricial da álgebra linear. Para que isso funcione, o número de colunas de A deve ser igual ao número de linhas de B. O resultado tem dimensões (linhas de A) x (colunas de B).

# 2x3 times 3x2 = 2x2
A <- matrix(c(1,2,3, 4,5,6), nrow = 2, byrow = TRUE)
B <- matrix(c(7,8, 9,10, 11,12), nrow = 3, byrow = TRUE)
cat('A (2x3):
'); print(A)
cat('B (3x2):
'); print(B)
cat('A %*% B (2x2):
'); print(A %*% B)

rowSums() e colSums()

rowSums(m) calcula a soma de cada linha; colSums(m) calcula a soma de cada coluna. Ambas retornam vectores nomeados se a matriz tiver nomes de dimensões.

sales <- matrix(
  c(120,135,110,98,  145,160,132,115,  88,95,102,78),
  nrow = 3, byrow = TRUE,
  dimnames = list(c('Q1','Q2','Q3'), c('Jan','Feb','Mar','Apr'))
)
cat('Sales matrix:
'); print(sales)
cat('Quarterly totals:', rowSums(sales), '
')
cat('Monthly totals: ', colSums(sales), '
')

rowMeans() e colMeans()

rowMeans(m) e colMeans(m) retornam, respectivamente, a média de cada linha e de cada coluna. Elas são mais rápidas do que aplicar mean() com apply() para essa tarefa comum.

exam_scores <- matrix(
  c(88,92,75,81, 79,85,90,73, 95,78,82,88),
  nrow = 3, byrow = TRUE,
  dimnames = list(c('Alice','Bob','Carol'), c('Math','Sci','Eng','Hist'))
)
cat('Student averages:
')
print(rowMeans(exam_scores))
cat('Subject averages:
')
print(colMeans(exam_scores))

Operações de comparação em matrizes

Operadores de comparação (==, >, <= etc.) aplicados a matrizes retornam uma matriz lógica com as mesmas dimensões. Você pode então usar essa máscara para selecionar elementos ou fazer contagens.

scores <- matrix(c(88,45,92,61,73,55,84,79), nrow = 2)
cat('Scores:
'); print(scores)

# Which elements pass?
passing_mask <- scores >= 60
cat('Passing mask:
'); print(passing_mask)
cat('Number passing:', sum(passing_mask), '
')
cat('Passing scores:', scores[passing_mask], '
')

apply() para operações personalizadas em linhas/colunas

apply(m, MARGIN, FUN) aplica uma função às linhas (MARGIN=1) ou às colunas (MARGIN=2). Use-a quando precisar de uma agregação personalizada além de rowSums/colMeans.

m <- matrix(c(3,1,4,1,5,9,2,6,5,3,5,8), nrow = 3)
cat('Matrix:
'); print(m)

# Max of each row
cat('Row max:  ', apply(m, 1, max), '
')
# Range of each column
cat('Col range:
')
print(apply(m, 2, range))
# Custom: count values > 4 per row
cat('Values > 4 per row:', apply(m, 1, function(x) sum(x > 4)), '
')

Transmitindo um vector pelas linhas

Quando você adiciona ou multiplica um vector por uma matriz, o R recicla o vector — percorrendo-o repetidamente para corresponder ao comprimento da matriz. A reciclagem ocorre coluna por coluna, o que pode produzir resultados inesperados se você quiser operações por linha.

m <- matrix(c(10,20,30, 40,50,60), nrow = 2)
cat('Matrix:
'); print(m)

# Add a 3-element vector: R recycles column-by-column
v <- c(1, 2, 3)
cat('m + c(1,2,3):
'); print(m + v)

# For row-wise scaling, use sweep()
row_weights <- c(0.5, 2.0)  # scale row 1 by 0.5, row 2 by 2
cat('Row-wise scaled:
'); print(sweep(m, 1, row_weights, '*'))

Resumo das operações aritméticas

Principais funções para operações com matrizes no R:

  • +, -, *, / — aritmética elemento a elemento
  • %*% — multiplicação matricial (álgebra linear)
  • rowSums(), colSums() — totais por linha/coluna
  • rowMeans(), colMeans() — médias por linha/coluna
  • apply(m, 1, fn) / apply(m, 2, fn) — agregação personalizada por linha/coluna
  • sweep() — operações por linha/coluna com um vector
m <- matrix(c(4,9,16,25), nrow = 2)
cat('Original:
'); print(m)
cat('sqrt (element-wise):
'); print(sqrt(m))
cat('rowSums:', rowSums(m), '
')
cat('colMeans:', colMeans(m), '
')

Verificação rápida

O que A * B calcula quando A e B são matrizes 2x2 no R?

Recapitulação: aritmética matricial

Ótimo trabalho! Principais aprendizados desta lição:

  • +, -, *, / em matrizes são operações elemento a elemento
  • %*% é a verdadeira multiplicação matricial (linhas × colunas)
  • rowSums(), colSums(), rowMeans(), colMeans() fazem agregações sobre linhas/colunas
  • Operadores de comparação retornam uma matriz lógica com o mesmo formato
  • apply(m, 1, fn) aplica uma função por linha; apply(m, 2, fn), por coluna
  • Use sweep() para dimensionamento vectorizado por linha/coluna
# Final: compute grade curve (add 5 to all scores, cap at 100)
raw <- matrix(c(88,55,92,73,60,45,78,95), nrow = 2)
curved <- pmin(raw + 5, 100)  # pmin applies min element-wise
cat('Raw:
');    print(raw)
cat('Curved:
'); print(curved)

Perguntas Frequentes

A aula “Aritmética e operações com matrizes” é grátis?

Sim — o texto completo de “Aritmética e operações com matrizes” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de R Academy, atualize para CoddyKit PRO. O curso de R Academy inclui 4 aulas no total.

O que vou aprender em “Aritmética e operações com matrizes”?

Execute multiplicação elemento a elemento e matricial, adição e subtração. Você pratica R Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar R Academy?

Nenhuma experiência prévia é necessária. R Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “Aritmética e operações com matrizes”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de R Academy?

Sim. Cada aula de R Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Criando matrizes com matrix()
  2. Indexação e subconjuntos de matrizes
  3. Aritmética e operações com matrizes
  4. Transposição e remodelagem de matrizes
← Voltar para R Academy