0Pricing
R Academy · Lección

Transposición y cambio de forma de matrices

Use t(), dim() y operaciones de cambio de forma en matrices.

Transposición y cambio de forma de matrices es una lección gratuita de R Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de R Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de R Academy incluye 4 lecciones en total.

Transponer una matriz con t()

t(m) transpone una matriz: intercambia filas y columnas, de modo que la fila i se convierte en la columna i del resultado. Las dimensiones se intercambian: una matriz 3x4 se convierte en una matriz 4x3 tras la transposición.

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)), '
')

Transponer con dimensiones con nombre

Cuando una matriz tiene nombres de filas y columnas, t() los intercambia correctamente: los nombres de las filas se convierten en nombres de columnas y viceversa. Así, los datos conservan sus etiquetas después de la transposición.

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))

Cambiar la forma con dim(m) <- c(r, c)

Puede cambiar la forma de una matriz reasignando su atributo dim. El número total de elementos debe mantenerse igual. El cambio de forma lee y rellena los datos columna por columna, igual que 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)

Convertir una matriz en un vector con as.vector()

as.vector(m) aplana una matriz y la convierte en un vector unidimensional, leyendo los valores columna por columna. Esto elimina todos los atributos de dimensión del 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), '
')

Convertir un vector en una matriz con as.matrix()

as.matrix(v) convierte un vector en una matriz de una sola columna. Esta es la conversión más sencilla. Después puede cambiar su forma mediante dim() para obtener las dimensiones deseadas.

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() — apilar filas

rbind() combina matrices o vectores apilando filas. Todas las entradas deben tener el mismo número de columnas. La matriz resultante tiene el número combinado de filas.

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() — unir columnas

cbind() combina matrices o vectores uniendo columnas lado a lado. Todas las entradas deben tener el mismo número de filas. El resultado tiene el número combinado de columnas.

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() y cbind() con filas o columnas con nombre

Cuando aplica rbind() o cbind() a matrices o vectores con nombre, se conservan los nombres de dimensión (y, en el caso de los vectores, sus nombres se convierten en nombres de filas o columnas).

# 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)

Identidad de la doble transposición

Aplicar t() dos veces devuelve la matriz original. Es una comprobación de coherencia útil y demuestra que la transposición es su propia operación 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áctica: cambio de forma estilo pivot

Una tarea habitual de cambio de forma consiste en convertir datos entre formatos ancho y largo. Aquí simulamos manualmente una transformación de ancho a largo mediante operaciones matriciales: transponer, aplanar y reconstruir la estructura.

# 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)

Resumen de cambio de forma y combinación

Herramientas clave para cambiar la forma y combinar matrices:

  • t(m) — transponer (intercambiar filas y columnas)
  • dim(m) <- c(r, c) — cambiar la forma directamente (con el mismo número total de elementos)
  • as.vector(m) — aplanar en un vector 1D (orden principal por columnas)
  • as.matrix(v) — convertir un vector en una matriz de una columna
  • rbind(...) — apilar matrices verticalmente
  • cbind(...) — unir matrices 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)

Comprobación rápida

¿Qué dimensiones produce t(matrix(1:12, nrow = 3, ncol = 4))?

Repaso: transposición y cambio de forma

¡Excelente! Estas son las ideas clave de la lección:

  • t(m) intercambia filas y columnas; t(t(m)) devuelve la matriz original
  • dim(m) <- c(r, c) cambia la forma sin copiar los datos (se requiere el mismo número de elementos)
  • as.vector() aplana columna por columna; as.matrix() crea una matriz de una sola columna
  • rbind() apila filas (se requiere el mismo número de columnas)
  • cbind() une columnas lado a lado (se requiere el mismo número de filas)
  • Las dimensiones con nombre se conservan en estas operaciones
# 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), '
')

Preguntas frecuentes

¿La lección «Transposición y cambio de forma de matrices» es gratis?

Sí — el texto completo de «Transposición y cambio de forma de matrices» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de R Academy, actualiza a CoddyKit PRO. El curso de R Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Transposición y cambio de forma de matrices»?

Use t(), dim() y operaciones de cambio de forma en matrices. Practicas R Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar R Academy?

No se requiere experiencia previa. R Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «Transposición y cambio de forma de matrices»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de R Academy?

Sí. Cada lección de R Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Creación de matrices con matrix()
  2. Indexación y subconfiguración de matrices
  3. Aritmética y operaciones con matrices
  4. Transposición y cambio de forma de matrices
← Volver a R Academy