0Pricing
R Academy · Aula

Transposição e remodelagem de matrizes

Use t(), dim() e operações de remodelagem em matrizes.

Transposição e remodelagem de matrizes é uma aula grátis de R Academy no CoddyKit. Esta é a aula 4 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.

Transpondo uma matriz com t()

t(m) transpõe uma matriz — troca linhas e colunas, de modo que a linha i se torna a coluna i no resultado. As dimensões são trocadas: uma matriz 3x4 se torna uma matriz 4x3 após a transposição.

m <- matrix(1:6, nrow = 2, ncol = 3)
cat('Original (2x3):
'); print(m)
cat('Transposed (3x2):
'); print(t(m))
cat('Original dim:', dim(m), '-> Transposed dim:', dim(t(m)), '
')

Transposição com dimensões nomeadas

Quando uma matriz tem nomes de linhas e colunas, t() troca os nomes corretamente: os nomes das linhas se tornam nomes das colunas e vice-versa. Assim, os dados continuam identificados após a transposição.

scores <- matrix(
  c(88,92,75, 79,85,90),
  nrow = 2, byrow = TRUE,
  dimnames = list(c('Alice', 'Bob'), c('Math', 'Sci', 'Eng'))
)
cat('Original (students x subjects):
'); print(scores)
cat('Transposed (subjects x students):
'); print(t(scores))

Reformatando com dim(m) <- c(r, c)

Você pode reformular uma matriz reatribuindo seu atributo dim. O número total de elementos deve permanecer o mesmo. A reformulação lê e preenche a matriz coluna por coluna, assim como matrix().

m <- matrix(1:12, nrow = 3, ncol = 4)
cat('Original (3x4):
'); print(m)

# Reshape to 4x3
dim(m) <- c(4, 3)
cat('Reshaped to (4x3):
'); print(m)

# Reshape to 6x2
dim(m) <- c(6, 2)
cat('Reshaped to (6x2):
'); print(m)

Convertendo uma matriz em vector com as.vector()

as.vector(m) transforma uma matriz em um vector unidimensional, lendo os valores coluna por coluna. Isso remove todos os atributos de dimensão do objeto.

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

v <- as.vector(m)
cat('As vector (col-by-col):', v, '
')
cat('Is vector:', is.vector(v), '
')
cat('Is matrix:', is.matrix(v), '
')

Convertendo um vector em matriz com as.matrix()

as.matrix(v) converte um vector em uma matriz de uma única coluna. Essa é a conversão mais simples. Em seguida, você pode reformulá-la usando dim() para obter as dimensões desejadas.

v <- c(5, 10, 15, 20, 25, 30)
cat('Vector:', v, '
')

# as.matrix makes a 6x1 matrix
m_single_col <- as.matrix(v)
cat('Single-column matrix:
'); print(m_single_col)
cat('Dimensions:', dim(m_single_col), '
')

rbind() — empilhando linhas

rbind() combina matrizes ou vectores empilhando linhas. Todas as entradas devem ter o mesmo número de colunas. A matriz resultante tem o número combinado de linhas.

first_half <- matrix(1:6, nrow = 2, ncol = 3)
second_half <- matrix(7:12, nrow = 2, ncol = 3)

combined <- rbind(first_half, second_half)
cat('rbind result (4x3):
'); print(combined)
cat('Dimensions:', dim(combined), '
')

cbind() — unindo colunas

cbind() combina matrizes ou vectores unindo colunas lado a lado. Todas as entradas devem ter o mesmo número de linhas. O resultado tem o número combinado de colunas.

ids <- matrix(101:104, nrow = 4, ncol = 1)
scores_mat <- matrix(c(88,79,95,72, 92,85,78,90), nrow = 4)

full_data <- cbind(ids, scores_mat)
colnames(full_data) <- c('ID', 'Test1', 'Test2')
cat('cbind result:
'); print(full_data)

rbind() e cbind() com linhas/colunas nomeadas

Quando você usa rbind() ou cbind() com matrizes ou vectores nomeados, os nomes das dimensões são preservados (e, no caso dos vectores, seus nomes se tornam nomes de linhas ou colunas).

# Add a new student row with rbind
existing <- matrix(c(88,92,75, 79,85,90), nrow = 2, byrow = TRUE,
                   dimnames = list(c('Alice','Bob'), c('Math','Sci','Eng')))
new_student <- c(Math=95, Sci=78, Eng=82)
updated <- rbind(existing, Carol = new_student)
cat('Updated roster:
'); print(updated)

Identidade da transposição dupla

Aplicar t() duas vezes retorna a matriz original. Essa é uma verificação útil de consistência e demonstra que a transposição é sua própria operação inversa: t(t(m)) == m.

m <- matrix(c(1,2,3,4,5,6), nrow = 2)
cat('Original:
'); print(m)
cat('t(m):
');    print(t(m))
cat('t(t(m)):
'); print(t(t(m)))
cat('t(t(m)) == m:', all(t(t(m)) == m), '
')

Prática: reformulação no estilo tabela dinâmica

Uma tarefa comum de reformulação é converter entre formatos largo e longo. Aqui, simulamos uma conversão manual de largo para longo usando operações matriciais — transpondo, achatando e reconstruindo a estrutura.

# Wide: 3 students x 4 months scores
wide <- matrix(c(85,88,90,92, 78,80,79,83, 91,94,88,95),
               nrow = 3, byrow = TRUE)
rownames(wide) <- c('Alice', 'Bob', 'Carol')
colnames(wide) <- c('Jan', 'Feb', 'Mar', 'Apr')
cat('Wide format:
'); print(wide)

# Transposed: 4 months x 3 students
long_view <- t(wide)
cat('Transposed (months x students):
'); print(long_view)

Resumo de reformulação e combinação

Principais ferramentas de reformulação e combinação de matrizes:

  • t(m) — transpõe (troca linhas e colunas)
  • dim(m) <- c(r, c) — reformula no próprio objeto (mantendo o mesmo total de elementos)
  • as.vector(m) — achata em um vector unidimensional (ordem principal por coluna)
  • as.matrix(v) — converte um vector em uma matriz de coluna única
  • rbind(...) — empilha matrizes verticalmente
  • cbind(...) — une matrizes horizontalmente
# Demo all tools
v <- 1:6
m1 <- as.matrix(v)               # 6x1
dim(m1) <- c(2, 3)               # reshape to 2x3
m2 <- t(m1)                      # 3x2
m3 <- cbind(m2, c(10, 20, 30))   # 3x3
cat('Final matrix:
'); print(m3)

Verificação rápida

Quais dimensões t(matrix(1:12, nrow = 3, ncol = 4)) produz?

Recapitulação: transposição e reformulação

Excelente! Principais aprendizados desta lição:

  • t(m) troca linhas e colunas; t(t(m)) retorna o original
  • dim(m) <- c(r, c) reformula sem copiar (é necessário manter o mesmo número de elementos)
  • as.vector() achata coluna por coluna; as.matrix() cria uma matriz de coluna única
  • rbind() empilha linhas (é necessário manter o mesmo número de colunas)
  • cbind() une colunas lado a lado (é necessário manter o mesmo número de linhas)
  • As dimensões nomeadas são preservadas nessas operações
# Practical: merge data then compute column means
team_a <- matrix(c(82,78,91, 85,80,88), nrow = 2, byrow=TRUE)
team_b <- matrix(c(75,92,79, 88,84,93), nrow = 2, byrow=TRUE)
all_teams <- rbind(team_a, team_b)
colnames(all_teams) <- c('Speed', 'Accuracy', 'Strength')
cat('Combined teams:
'); print(all_teams)
cat('Average per skill:', colMeans(all_teams), '
')

Perguntas Frequentes

A aula “Transposição e remodelagem de matrizes” é grátis?

Sim — o texto completo de “Transposição e remodelagem de 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 “Transposição e remodelagem de matrizes”?

Use t(), dim() e operações de remodelagem em matrizes. 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 4 de 4.

Quanto tempo leva a aula “Transposição e remodelagem de 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