def values_at(*columns)
      result = []
      columns.each do |column|
        data = at(column)
        if column.is_a?(Range)
          result.concat(data) if data
        else
          result << data
        end
      end

      result
    end
def values_at(*columns)
      result = []
      columns.each do |column|
        data = at(column)
        if column.is_a?(Range)
          result.concat(data) if data
        else
          result << data
        end
      end

      result
    end
Access multiple values by either index, index-range, accessor or header-name.
 @example
     table = Tabledata.table header: %w[x y z], body: [[:a,:b,:c]], accessors: %i[foo bar baz]
     row   = table.row(1)
     row.values_at(2,1,0)    # => [:c, :b, :a]
     row.values_at(:foo,'z') # => [:a, :c]
     row.values_at(0..1, 2..-1) # => [:a, :b, :c]