Problema
Queremos substraer a cada valor de una fila la mediana de la fila.
Datos
Creamos una matriz de 5x10.
set.seed(24)
m1 <- matrix(sample(0:9, 10*5, replace=TRUE), ncol=5)
[,1] [,2] [,3] [,4] [,5]
[1,] 2 6 0 3 4
[2,] 2 3 5 2 3
[3,] 7 6 7 3 2
[4,] 5 6 1 1 2
[5,] 6 3 2 9 0
[6,] 9 9 6 2 0
[7,] 2 1 0 7 3
[8,] 7 0 5 6 3
[9,] 8 5 6 6 2
[10,] 2 1 0 9 3
Solución
m1 - apply(m1, 1, median)
[,1] [,2] [,3] [,4] [,5]
[1,] -1 3 -3 0 1
[2,] -1 0 2 -1 0
[3,] 1 0 1 -3 -4
[4,] 3 4 -1 -1 0
[5,] 3 0 -1 6 -3
[6,] 3 3 0 -4 -6
[7,] 0 -1 -2 5 1
[8,] 2 -5 0 1 -2
[9,] 2 -1 0 0 -4
[10,] 0 -1 -2 7 1
Si queremos conocer la mediana de cada fila.
apply(m1, 1, median)
[1] 3 3 6 2 3 6 2 5 6 2
Notas
Empleamos la función apply para aplicar una función a cada fila, en este caso la función median (mediana). En el segundo argumento de la función 1 indica que la función será aplicada sobre las filas (fila a fila). Las funciones apply son muy útiles en R pues evitan el uso de bucles (loops), pudiendo aplicar funciones a los márgenes, filas o columnas, de una matriz.
Entradas relacionadas
Referencias
No hay comentarios:
Publicar un comentario