class Rserve::REXP::Double

Constants

NA
NA_ARRAY

Attributes

payload[R]

Public Class Methods

infinite?(value) click to toggle source
# File lib/rserve/rexp/double.rb, line 63
def self.infinite?(value)
  value.respond_to?(:infinite?) and !value.infinite?.nil?
end
new(data, attrs=nil) click to toggle source
Calls superclass method Rserve::REXP::new
# File lib/rserve/rexp/double.rb, line 18
def initialize(data, attrs=nil)
  @payload=case data
    when Numeric
      [data.to_f]
    when Array
      data
    else
      raise ArgumentError, "Should be Numeric or Array"
  end
  super(attrs)
end

Public Instance Methods

as_doubles() click to toggle source
# File lib/rserve/rexp/double.rb, line 43
def as_doubles
  @payload.map do |v|
    na?(v) ? nil : v.to_f
  end
end
as_integers() click to toggle source
# File lib/rserve/rexp/double.rb, line 38
def as_integers
  @payload.map do |v|
    (na?(v) or Double.infinite?(v)) ? nil : v.to_i
  end
end
as_strings() click to toggle source
# File lib/rserve/rexp/double.rb, line 48
def as_strings
  @payload.map {|v| v.to_f.to_s}
end
integer?() click to toggle source
# File lib/rserve/rexp/double.rb, line 32
def integer?
  true
end
length() click to toggle source
# File lib/rserve/rexp/double.rb, line 29
def length
  payload.length
end
na?(value=:nil) click to toggle source
# File lib/rserve/rexp/double.rb, line 52
def na?(value=:nil)
  #if value.nil?
  #  @payload.map {|v| v.respond_to? :nan and v.nan?}
  #else
  #  value.respond_to? :nan? and value.nan?
  #end
  #p @payload
  return _na?(value) unless value==:nil
  @payload.map {|v| _na?(v) }
end
numeric?() click to toggle source
# File lib/rserve/rexp/double.rb, line 35
def numeric?
  true
end
to_debug_string() click to toggle source
Calls superclass method Rserve::REXP#to_debug_string
# File lib/rserve/rexp/double.rb, line 68
def to_debug_string
  t=super
  t << "{"  << @payload.map(&:to_s).join(",") << "}"
end
to_ruby_internal() click to toggle source
Calls superclass method Rserve::REXP::Vector#to_ruby_internal
# File lib/rserve/rexp/double.rb, line 72
def to_ruby_internal
  if dim 
    if dim.size==2
      as_matrix
    else
      as_nested_array
    end
  else
    super
  end
end

Protected Instance Methods

_na?(value) click to toggle source
# File lib/rserve/rexp/double.rb, line 86
def _na?(value)
  return true if value.nil?
  if value.is_a? Float
    return true if value.nan?
    return false if value.infinite?
  end
  value.to_i == NA
end