Indexación y subconfiguración de matrices
Acceda a filas, columnas y elementos mediante la notación [row, col].
Indexación y subconfiguración de matrices es una lección gratuita de R Academy en CoddyKit. Esta es la lección 2 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.
Conceptos básicos de indexación de matrices
Para acceder a los elementos de una matriz, use la notación m[row, col]. En R, los índices de filas y columnas empiezan en 1. La coma es obligatoria: omitirla hace que la matriz se trate como un vector plano.
m <- matrix(1:12, nrow = 3, ncol = 4)
cat('Full matrix:
')
print(m)
# Element at row 2, column 3
cat('m[2, 3] =', m[2, 3], '
')
# Element at row 1, column 4
cat('m[1, 4] =', m[1, 4], '
')Extraer una fila completa
Deje vacío el índice de columna para extraer una fila completa. El resultado es un vector (se elimina la dimensión de la matriz). La coma debe seguir presente.
scores <- matrix(c(88,92,75,81, 79,85,90,73, 95,78,82,88),
nrow = 3, byrow = TRUE)
rownames(scores) <- c('Alice', 'Bob', 'Carol')
colnames(scores) <- c('Math', 'Sci', 'Eng', 'Hist')
print(scores)
# Extract Alice's row
alice_scores <- scores[1, ]
cat('Alice:', alice_scores, '
')
cat('Alice mean:', mean(alice_scores), '
')Extraer una columna completa
Deje vacío el índice de fila para extraer una columna completa. Al igual que al extraer una fila, el resultado es un vector. La coma que separa las posiciones de fila y columna debe seguir presente.
scores <- matrix(c(88,92,75,81, 79,85,90,73, 95,78,82,88),
nrow = 3, byrow = TRUE)
rownames(scores) <- c('Alice', 'Bob', 'Carol')
colnames(scores) <- c('Math', 'Sci', 'Eng', 'Hist')
# Extract the Math column
math_scores <- scores[, 1]
cat('Math scores:', math_scores, '
')
cat('Math mean: ', mean(math_scores), '
')
cat('Math max: ', max(math_scores), '
')Seleccionar varias filas y columnas
Use un vector de índices para extraer varias filas o columnas a la vez. El resultado es una submatriz (sigue siendo una matriz, no un vector), por lo que se conserva la estructura bidimensional.
m <- matrix(1:16, nrow = 4, ncol = 4)
cat('Original 4x4:
')
print(m)
# Extract rows 1,3 and columns 2,4
sub_m <- m[c(1, 3), c(2, 4)]
cat('Submatrix rows 1,3 cols 2,4:
')
print(sub_m)
cat('Class:', class(sub_m), '
')Acceder por nombre de fila o columna
Si una matriz tiene nombres de filas y columnas, puede indexarla por nombre en lugar de hacerlo por posición. Esto mejora la legibilidad y hace el código más resistente a la reordenación de filas o columnas.
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')
))
# Access by name
cat('Bob Science:', scores['Bob', 'Sci'], '
')
cat('Carol row:
')
print(scores['Carol', ])
cat('English column:
')
print(scores[, 'Eng'])Indexación lógica de matrices
Puede usar un vector lógico (o una matriz lógica) para seleccionar elementos. Cuando se usa un vector lógico en una dimensión, selecciona las filas o columnas cuyo valor es TRUE.
scores <- matrix(c(88,92,75,81, 79,85,90,73, 95,78,82,88),
nrow = 3, byrow = TRUE)
rownames(scores) <- c('Alice', 'Bob', 'Carol')
# Select students with mean score >= 85
row_means <- rowMeans(scores)
high_achievers <- scores[row_means >= 85, ]
cat('High achievers (mean >= 85):
')
print(high_achievers)Indexación negativa: excluir filas o columnas
Anteceda un índice con - para excluir esa fila o columna. Es una forma sencilla de eliminar filas o columnas específicas sin tener que enumerar todas las que desea conservar.
m <- matrix(1:12, nrow = 3, ncol = 4, byrow = TRUE)
cat('Original:
')
print(m)
# Drop row 2
cat('Without row 2:
')
print(m[-2, ])
# Drop columns 1 and 3
cat('Without cols 1 and 3:
')
print(m[, c(-1, -3)])Elemento único con drop = FALSE
De forma predeterminada, al extraer una sola fila o columna se elimina la dimensión (se devuelve un vector). Use drop = FALSE para conservar el resultado como una matriz (manteniendo la estructura de filas y columnas).
m <- matrix(1:9, nrow = 3, ncol = 3)
# Default: drops to vector
row1_vector <- m[1, ]
cat('m[1,] class:', class(row1_vector), '
') # numeric (vector)
# drop = FALSE: keeps as 1-row matrix
row1_matrix <- m[1, , drop = FALSE]
cat('m[1,,drop=FALSE] class:', class(row1_matrix), '
')
cat('Dimensions:', dim(row1_matrix), '
')Reemplazar valores mediante índices
Puede modificar elementos específicos combinando la indexación con la asignación. Esto funciona con elementos individuales, filas completas, columnas completas o submatrices.
m <- matrix(0, nrow = 4, ncol = 4)
cat('Zero matrix:
')
print(m)
# Set diagonal to 5
for (i in 1:4) m[i, i] <- 5
cat('After setting diagonal:
')
print(m)
# Replace entire row 2
m[2, ] <- c(1, 2, 3, 4)
cat('After replacing row 2:
')
print(m)Indexación lineal (plana)
Internamente, una matriz se almacena como un vector plano (columna por columna). Puede acceder a los elementos con un único índice entero siguiendo este orden plano. Esto puede resultar útil para operaciones masivas.
m <- matrix(c(10,20,30,40,50,60), nrow = 2, ncol = 3)
cat('Matrix:
')
print(m)
# Flat indices: column by column
cat('m[1] =', m[1], '(row 1, col 1)
')
cat('m[3] =', m[3], '(row 1, col 2)
')
cat('m[5] =', m[5], '(row 1, col 3)
')
# Replace flat index 4
m[4] <- 99
print(m)Resumen de indexación
Referencia rápida para la indexación de matrices en R:
m[r, c]— elemento individual en la fila r y la columna cm[r, ]— fila r completam[, c]— columna c completam[c(r1,r2), c(c1,c2)]— submatrizm['name', 'name']— acceso mediante dimnamem[-r, ]— excluir la fila rm[logical_vec, ]— selección lógica de filasm[r, , drop=FALSE]— conservar como matriz
m <- matrix(c(5,10,15,20,25,30), nrow = 2, ncol = 3)
cat('m[1,2] =', m[1,2], '
')
cat('m[2,] =', m[2,], '
')
cat('m[,3] =', m[,3], '
')
cat('m[-1,] :
'); print(m[-1, ])Comprobación rápida
¿Qué devuelve m[-2, ] para una matriz m con 3 filas?
Repaso: indexación de matrices
¡Buen trabajo! Estas son las ideas clave de la lección:
m[r, c]usa primero la fila y después la columna; ambas posiciones se separan con una coma- Deje en blanco uno de los lados (
m[r, ]om[, c]) para extraer filas o columnas completas - Los índices negativos excluyen filas o columnas
- Los vectores lógicos pueden filtrar filas o columnas
- Las dimensiones con nombre permiten indexar por nombre para mejorar la legibilidad
drop = FALSEevita la pérdida de dimensiones al extraer filas o columnas individuales
# Practical: find best student per subject
scores <- matrix(c(88,92,75,81, 79,85,90,73, 95,78,82,88),
nrow = 3, byrow = TRUE)
rownames(scores) <- c('Alice', 'Bob', 'Carol')
colnames(scores) <- c('Math', 'Sci', 'Eng', 'Hist')
for (subj in colnames(scores)) {
best <- rownames(scores)[which.max(scores[, subj])]
cat('Best in', subj, ':', best, '
')
}Preguntas frecuentes
¿La lección «Indexación y subconfiguración de matrices» es gratis?
Sí — el texto completo de «Indexación y subconfiguración 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 «Indexación y subconfiguración de matrices»?
Acceda a filas, columnas y elementos mediante la notación [row, col]. 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 2 de 4.
¿Cuánto tiempo toma la lección «Indexación y subconfiguración 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
- Creación de matrices con matrix()
- Indexación y subconfiguración de matrices
- Aritmética y operaciones con matrices
- Transposición y cambio de forma de matrices