Cómo aplicar funciones de filas y columnas en r

En R, se puede utilizar el aplicar() la función de aplicar una función sobre cada fila o columna de un bastidor de matriz o de datos. Esto presenta algunas oportunidades muy práctico.

Contar en R usando el aplicar función

Imagine que contó los pájaros en su patio trasero en tres días diferentes y almacenó los recuentos en una matriz de la siguiente manera:

gt; conteos lt; - matriz (c (3,2,4,6,5,1,8,6,1), NcoI = 3) gt; COLNAMES (recuentos) lt; - c ( `gorrión`, `paloma`, `cuervo`) gt; countssparrow paloma cuervo [1], 368 [2], 256 [3,] 411

Cada columna representa una especie diferente, y cada fila representa un día diferente. Ahora se quiere conocer la mayor cantidad por especies en un día determinado. Se podría construir una para bucle para hacerlo, pero utilizando aplicar(), Esto se hace en una sola línea de código:

gt; aplicar (recuentos, 2, max) sparrowdovecrow4 6 8

los aplicar() función devuelve un vector con el máximo para cada columna y convenientemente utiliza los nombres de columna como nombres para este vector también. Si R no encuentra nombres para la dimensión sobre la cual aplicar() carreras, devuelve un objeto no identificado en su lugar.

Vamos a echar un vistazo a cómo este aplicar() La opción funciona. En las anteriores líneas de código, que utilizó tres argumentos:

  • El objeto sobre el que tiene la función de ser aplicado: En este caso, es la matriz conteos.

  • La dimensión o índice sobre la que la función tiene que ser aplicados: El número 1 significa modo de fila, y el número 2 significa la columna-sabia. A continuación, aplicamos la función sobre las columnas. En el caso de matrices de más dimensiones, este índice puede ser mayor que 2.

  • El nombre de la función que tiene que ser aplicado: Se puede utilizar entre comillas el nombre de la función, pero no tiene que hacerlo. A continuación, aplicamos la función máx. Tenga en cuenta que no hay paréntesis necesarios después de que el nombre de la función.

los aplicar() función divide la matriz en filas. Recuerde que si selecciona una sola fila o columna, R, de forma predeterminada, que simplificará a un vector. los aplicar() a continuación, utiliza la función de estos vectores, uno por uno como argumento para la función especificada. Por lo tanto, la función aplicada tiene que ser capaz de hacer frente a los vectores.

Añadir argumentos adicionales a la aplicar función

Volvamos a nuestro ejemplo de la sección anterior: Imagínese que no busque palomas del segundo día. Esto significa que, para ese día, usted no tiene ningún dato, así que hay que establecer que el valor de N / A Me gusta esto:

gt; los recuentos de [2, 2] lt; - NA

Si se aplica el máx la función de las columnas de esta matriz, se obtiene el siguiente resultado:

gt; aplicar (recuentos, 2, max) sparrowdovecrow4 NA 8

Eso no es lo que desea. Con el fin de hacer frente a los valores que faltan, que necesita para aprobar el argumento na.rm al máx función en el aplicar() llamar (véase el capítulo 4). Afortunadamente, esto se hace fácilmente en R. Sólo tiene que añadir todos los argumentos adicionales a la función como argumentos adicionales del aplicar() llamar, así:

gt; aplicar (recuentos, 2, max, na.rm = TRUE) sparrowdovecrow4 6 8

Puede pasar cualquier argumento que desea la función en el aplicar() llamar con sólo añadir que entre los paréntesis después de los tres primeros argumentos.

Artículos Relacionados