Cadenas de operaciones

Una función muy importante del paquete es la capacidad de encadenar operaciones en un mismo comando sin necesidad de guardar el resultado en algun objeto.

Es una función similar al uso del pipe %>% o |> en tidyverse o rbase. En data table se pueden evaluar una serie de expresiones una después de la otra escribiendolas entre corchetes de esta manera:

DT[ ... ][ ... ][ ... ]

o de forma vertical

DT[ ...
   ][ ...
     ][ ...
       ]

Por ejemplo, recapitulando temas anteriores, utilizando la tabla de registros de plantas de México podemos:

  1. Seleccionar los registros del género Quercus y filtrar aquellos que no tienen información acerca de la especie o del año de colecta

library(data.table)

data = fread("data/plantae_mexico_conCoords_specimen.csv")

data[genus == "Quercus" & !is.na(species) & species != "" & !is.na(year)]
  1. Agrupar por especie y por año de colecta

  2. Contar el número de registros de que se realizó para cada especie en cada año


data[genus == "Quercus" & !is.na(species) & species != "" & !is.na(year), .(.N), by = .(year,species)]
  1. Ordenar la columna de número de registros de mayor a menor utilizando una cadena de operaciones

data[genus == "Quercus" & !is.na(species) & species != "" & !is.na(year), .(N = .N), by = .(year,species)][order(year,-N)]
       year                   species     N
      <int>                    <char> <int>
   1:  1827 Quercus toxicodendrifolia     5
   2:  1827           Quercus repanda     1
   3:  1827         Quercus caudicans     1
   4:  1828          Quercus cortesii     1
   5:  1829        Quercus lancifolia     1
  ---                                      
6041:  2023     Quercus hypoleucoides     1
6042:  2023      Quercus oblongifolia     1
6043:  2023           Quercus toumeyi     1
6044:  2023           Quercus viminea     1
6045:  2023         Quercus arizonica     1