def reject_values(*values)
      positions =
        size.times.to_a - @data.flat_map { |vec| vec.positions(*values) }
      # Handle the case when positions size is 1 and #row_at wouldn't return a df
      if positions.size == 1
        pos = positions.first
        row_at(pos..pos)
      else
        row_at(*positions)
      end
    end
def reject_values(*values)
      positions =
        size.times.to_a - @data.flat_map { |vec| vec.positions(*values) }
      # Handle the case when positions size is 1 and #row_at wouldn't return a df
      if positions.size == 1
        pos = positions.first
        row_at(pos..pos)
      else
        row_at(*positions)
      end
    end
Returns a dataframe in which rows with any of the mentioned values
 are ignored.
 @param [Array] values to reject to form the new dataframe
 @return [Daru::DataFrame] Data Frame with only rows which doesn't
   contain the mentioned values
 @example
   df = Daru::DataFrame.new({
     a: [1,    2,          3,   nil,        Float::NAN, nil, 1,   7],
     b: [:a,  :b,          nil, Float::NAN, nil,        3,   5,   8],
     c: ['a',  Float::NAN, 3,   4,          3,          5,   nil, 7]
   }, index: 11..18)
   df.reject_values nil, Float::NAN
   # => #<Daru::DataFrame(2x3)>
   #       a   b   c
   #   11   1   a   a
   #   18   7   8   7