Publicado por en
A la hora de trabajar con R puede ser interesante obtener el mínimo o máximo de cada una de las columnas de una matriz. En otras ocasiones puede ser interesante obtener por ejemplo la media, mediana o desviación estándar. Las funciones nativas de R no funcionan de esta manera, ya que generalmente trabajan sobre todo la matriz. Por lo que en estas situaciones se ha de utilizar el método apply en R para obtener este tipo de resultados.
En esta entrada se repasa el funcionamiento básico del método apply
en R. Una herramienta muy potente.
Mínimo de una columna con apply en R
La forma de aplicar una misma función sobre una columna o una fila de una matriz en R es mediante la función apply
. A esta función se le ha de indicar como primer parámetro la matriz sobre la que se va a trabajar, el segundo será el eje y el tercero la función a aplicar. Por ejemplo, para obtener el mínimo de en cada una de las columnas de una matriz se puede utilizar:
apply(z, 1, min)
Por otro lado, el mínimo de cada columna se puede obtener mediante la expresión:
apply(z, 2, min)
En este segundo código solamente se ha modificado el valor del eje. En estos se puede ver que el valor 1 indica filas, mientras que el valor 2 indica columnas. El funcionamiento de estas funciones se puede ver en el siguiente ejemplo:
> z <- matrix(1:6,nrow=2) > z [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 > apply(z, 1, min) [1] 1 2 > apply(z, 2, min) [1] 1 3 5
# Eliminación de valores nulos
En el caso de que la matriz contenga valores nulos y se deseen omitir se le puede indicar a apply
. Simplemente se ha de pasar como cuarto parámetro la opción na.rm = TRUE)
. En el siguiente ejemplo se puede ver el funcionamiento de esta opción:
> z[2,2] <- NA > z [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 NA 6 > apply(z, 2, min) [1] 1 NA 5 > apply(z, 2, min, na.rm = TRUE) [1] 1 3 5
Conclusiones
En esta entrada se ha visto el funcionamiento básico de la función apply
. Gracias a ella se puede operar sobre las filas o columnas de las matrices en R facilitando bastantes análisis de datos.