2.2 Selección de filas y columnas

Igual que ocurre con una hoja de cálculo, frecuentemente queremos trabajar con un subconjunto de la tabla, i.e., con una selección de filas y/o columnas. Para este tipo de selecciones se usa el corchete:

iris[1:10,]        # diez primeras filas
iris[, 3:4]        # columnas 3 y 4
iris[1:10, 3:4]

Cuando se opera con tablas, los corchetes siempre6 tienen dos partes separadas por una coma:

  • la que la precede se refiere a las filas
  • la que la sigue, a las columnas.

No es necesario conocer índice de una determinada columna para seleccionarla: los corchetes admiten también el nombres de columnas:

iris[, "Species"]

Es tan habitual extraer y operar sobre columnas individuales de una tabla que R proporciona una manera más breve de hacerlo:

iris$Species

De hecho, se prefiere habitualmente (porque es más rápido y más legible) iris$Species a iris[, "Species"].

R está diseñado fundamentalmente para ser usado interactivamente, es decir, para que el usuario utilice la consola para ensayar, probar distintas alternativas, etc. Por eso R está lleno de atajos pensados para abreviar el trabajo, dispone de operadores flexibles como los corchetes, etc. Eso lo diferencia de otros lenguajes, frecuentemente mucho más rígidos, que están orientados a crear programas más o menos complejos.

El corchete también permite seleccionar filas mediante condiciones lógicas:

iris[iris$Species == "setosa",]

Selecciona las filas de iris cuya longitud del pétalo sea mayor que 4.

Selecciona las filas donde cyl sea menor que 6 y gear igual a 4 en mtcars. Nota: el operador AND en R es &.

La selección de filas mediante condiciones lógicas es muy útil y será muy necesaria posteriormente cuando queramos eliminar sujetos con edades negativas, detectar los pacientes con niveles de glucemia por encima de un determinado umbral, etc.

Los ejemplos anteriores dan cuenta de la versatilidad de []. Dentro de él pueden indicarse:

  • coordenadas (o rangos de coordenadas) de filas y columnas
  • nombres de columnas
  • condiciones lógicas para seleccionar filas que cumplan un criterio determinado

Más adelante, cuando tratemos los vectores7, veremos cómo:

  • seleccionar no solo rangos de columnas (p.e., 1:4), sino columnas determinadas (p.e., la 1, 4 y 7)
  • seleccionar varias columnas por nombre
  • construir condiciones lógicas no triviales

  1. No es ortotipográficamente correcto usar negritas de esta manera; sin embargo, es tan importante recordarlo que, por una vez, el autor se saltará la norma.

  2. Porque dentro del corchete podremos utilizar un vector de nombres o números e columnas.