This is a generic function, with methods supplied for matrices, data
  frames and vectors (including lists).  Packages and users can add
  further methods.
For ordinary vectors, the result is simply
  x[subset & !is.na(subset)].
For data frames, the subset argument works on the rows.  Note
  that subset will be evaluated in the data frame, so columns can
  be referred to (by name) as variables in the expression (see the examples).
The select argument exists only for the methods for data frames
  and matrices.  It works by first replacing column names in the
  selection expression with the corresponding column numbers in the data
  frame and then using the resulting integer vector to index the
  columns.  This allows the use of the standard indexing conventions so
  that for example ranges of columns can be specified easily, or single
  columns can be dropped (see the examples).
The drop argument is passed on to the indexing method for
  matrices and data frames: note that the default for matrices is
  different from that for indexing.
Factors may have empty levels after subsetting; unused levels are
  not automatically removed.  See droplevels for a way to
  drop all unused levels from a data frame.