Module: DataBlockToR

Includes:
BlockToRSupport
Defined in:
lib/statsailr/block_to_r/sts_block_to_r.rb

Class Method Summary collapse

Class Method Details

.create_function(blk) ⇒ Object



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/statsailr/block_to_r/sts_block_to_r.rb', line 48

def self.create_function( blk )
  load_datasailr_library()

  out_ds = blk.out
  if set_ds = blk.opts["set"]
  else
    raise "DATA block requires set= option for input dataset"
  end

  puts "Processing data [input:#{set_ds.to_s} ouput:#{out_ds.to_s}]"

  ds_script = blk.script

  datasailr_func = RBridge.create_function_call( "sail" , {"df" => set_ds.to_r_symbol, "code" => RBridge.create_strvec([ds_script])} )
  r_func = RBridge.create_assign_function( out_ds.to_s , datasailr_func )   
end

.load_datasailr_libraryObject



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/statsailr/block_to_r/sts_block_to_r.rb', line 31

def self.load_datasailr_library
  if ! @datasailr_library_loaded
    begin
      lib_func1 = RBridge.create_library_function("datasailr")
      result = RBridge.exec_function(lib_func1)
      @datasailr_library_loaded = true
    rescue => err
      puts "ERROR: 'datasailr' package cannot be found in the following R library paths."
      libpath = RBridge.create_function_call(".libPaths", {})
      RBridge.exec_function_no_return( RBridge.create_function_call("print", {"x" => libpath}))
      puts "Please make sure that the package is installed in one of the libraries."
      err.set_backtrace([])
      raise err, "DATA block evaluation failed"
    end
  end
end