class R::RserveConnectionDsl
defines nice dsl for working with rserve-client
Attributes
args[RW]
conn[RW]
pkg_dir[RW]
Public Class Methods
new(conn, args={})
click to toggle source
# File lib/r.rb, line 47 def initialize conn, args={} self.conn = conn self.args = args self.pkg_dir ||= args.delete(:pkg_dir) self.pkg_dir ||= File.join(Rails.root, '/r-packages') if defined?(Rails) self.pkg_dir ||= 'r-packages' args.each{|k,v| a(k.to_s, v)} if args.any? end
Public Instance Methods
a(*args)
click to toggle source
short for 'assign', send ruby objects to r, save as variable
# File lib/r.rb, line 81 def a *args args[1] = args[1].to_s if args[1].is_a?(Symbol) do_conn :assign, *args end
assert_defined(*keys)
click to toggle source
# File lib/r.rb, line 60 def assert_defined *keys keys.map do |k| begin e k.to_s rescue raise ArgumentError.new("expected #{k} to be defined in R envionment, but was not") end end end
clear()
click to toggle source
remove defined variables from the R
environment
# File lib/r.rb, line 111 def clear ve 'rm(list=ls())' end
do_conn(meth, *args)
click to toggle source
# File lib/r.rb, line 56 def do_conn meth, *args conn.send(meth, *args) end
e(*args)
click to toggle source
short for 'eval', execute given arguments, collect results, convert to ruby
# File lib/r.rb, line 71 def e *args do_conn(:eval, *args).to_ruby end
install_package(pkgname)
click to toggle source
# File lib/r.rb, line 94 def install_package pkgname FileUtils.mkdir_p pkg_dir unless package_installed? pkgname ve "install.packages('#{pkgname}', repos='http://cran.cnr.Berkeley.edu/', depends=c('Depends'))" end end
installed_packages()
click to toggle source
# File lib/r.rb, line 90 def installed_packages e "rownames(installed.packages())" end
library(pkgname, fail_after=300)
click to toggle source
attempts to install given R
package if necessary and require in the environment via 'library'
# File lib/r.rb, line 103 def library pkgname, fail_after=300 Timeout::timeout(fail_after) do install_package pkgname e "library(#{pkgname})" end end
package_installed?(pkgname)
click to toggle source
# File lib/r.rb, line 86 def package_installed? pkgname e "('#{pkgname}' %in% rownames(installed.packages()) == TRUE)" end
ve(*args)
click to toggle source
short for 'void_eval', just execute the arguments, don't return results
# File lib/r.rb, line 76 def ve *args do_conn :void_eval, *args end