stephenmurdoch
stephenmurdoch

Reputation: 34613

Can Ruby interface with r?

A friend needs to do some R programming for her PhD and since I'm a programmer, asked me to give her a hand.

So I took a look at some r related webstuff and discovered that you can interact with it through RPy (python) and statistics::R (perl). Is there a way for Rubyists to hook into R?

Is there a dummy's guide to learning R (like a video series)?

Upvotes: 14

Views: 5740

Answers (4)

Andrew Redd
Andrew Redd

Reputation: 4692

RinRuby is another project that does the Ruby/R interface.

Upvotes: 2

bta
bta

Reputation: 45057

See RSRuby for accessing R functionality through Ruby.

As for a beginner's tutorial, try looking at "R For Beginners". I found it helpful when I had to learn some basic R for a statistics course.

Upvotes: 8

Steve Bennett
Steve Bennett

Reputation: 126285

This presentation summarises the alternatives.

Libraries

Both discussed in others' answers, both haven't been updated years.

Rserve with Ruby client

Rserve is a Java TCP/IP server that the native Ruby client can connect to.

I've just tested out this approach and it's extremely easy.

sudo apt-get install -y r-base ruby-gems # Just in case...

sudo R
> install.packages("Rserve")
> library(Rserve)
> Rserve()

# (In another window - not sure how the 'daemon mode' operates exactly.

sudo gem install rserve-client

irb
> require "rserve"
> include Rserve
> c = Connection.new
> x = c.eval("R.version.string");
> puts x.as_string

R version 2.10.1 (2009-12-14)
  => nil 

rApache and Rook (formerly "rrack")

rApache is a web application framework for R (just like Rails is for Ruby). I think Rook is a shim to allow rApache to work on non-Apache webservers. So the approach here (I think) is to run rApache and Rails side by side. Your Rails app can call rApache/Rook as needed to perform queries, or to hand over control for rendering graphs etc.

Upvotes: 13

Martin Harrigan
Martin Harrigan

Reputation: 1044

There is also a Ruby client for Rserve.

Upvotes: 2

Related Questions