class Charty::TableAdapters::DaruAdapter

Attributes

data[R]

Public Class Methods

new(data, columns: nil, index: nil) click to toggle source
# File lib/charty/table_adapters/daru_adapter.rb, line 15
def initialize(data, columns: nil, index: nil)
  @data = check_type(Daru::DataFrame, data, :data)

  self.columns = columns unless columns.nil?
  self.index = index unless index.nil?
end
supported?(data) click to toggle source
# File lib/charty/table_adapters/daru_adapter.rb, line 11
def self.supported?(data)
  defined?(Daru::DataFrame) && data.is_a?(Daru::DataFrame)
end

Public Instance Methods

[](row, column) click to toggle source
# File lib/charty/table_adapters/daru_adapter.rb, line 53
def [](row, column)
  if row
    @data[column][row]
  else
    column_data = if @data.has_vector?(column)
                    @data[column]
                  else
                    case column
                    when String
                      @data[column.to_sym]
                    else
                      @data[column.to_s]
                    end
                  end
    Vector.new(column_data)
  end
end
[]=(key, values) click to toggle source
# File lib/charty/table_adapters/daru_adapter.rb, line 71
def []=(key, values)
  case key
  when Symbol
    sym_key = key
    str_key = key.to_s
  else
    str_key = key.to_str
    sym_key = str_key.to_sym
  end
  case
  when @data.has_vector?(sym_key)
    key = sym_key
  when @data.has_vector?(str_key)
    key = str_key
  end

  case values
  when Charty::Vector
    case values.adapter
    when Charty::VectorAdapters::DaruVectorAdapter
      @data[key] = values.adapter.data
    else
      @data[key] = values.to_a
    end
  else
    orig_values = values
    values = Array.try_convert(values)
    if values.nil?
      raise ArgumentError, "`values` must be convertible to Array"
    end
    @data[key] = values
  end
  return values
end
column_names() click to toggle source
# File lib/charty/table_adapters/daru_adapter.rb, line 40
def column_names
  @data.vectors.to_a
end
columns() click to toggle source
# File lib/charty/table_adapters/daru_adapter.rb, line 32
def columns
  DaruIndex.new(data.vectors)
end
columns=(values) click to toggle source
# File lib/charty/table_adapters/daru_adapter.rb, line 36
def columns=(values)
  data.vectors = Daru::Index.coerce(values)
end
compare_data_equality(other) click to toggle source
# File lib/charty/table_adapters/daru_adapter.rb, line 44
def compare_data_equality(other)
  case other
  when DaruAdapter
    data == other.data
  else
    super
  end
end
index() click to toggle source
# File lib/charty/table_adapters/daru_adapter.rb, line 26
def index
  DaruIndex.new(data.index)
end

Private Instance Methods

check_type(type, data, name) click to toggle source
# File lib/charty/table_adapters/daru_adapter.rb, line 106
        def check_type(type, data, name)
  return data if data.is_a?(type)
  raise TypeError, "#{name} must be a #{type}"
end