JRuby から R の機能を呼び出す (rsruby を使用)
この Web ページで行うこと
- rsruby のインストール
- rsruby を使った散布図の作成を試してみる
rsruby のインストール (Install rsruby)
Ubuntu でのインストール手順 (Install rsruby on Ubuntu System)
Ubuntu を使用する場合は,次のように操作する.
- Ubuntu で Ruby 処理系のインストール
- Ubuntu で R 処理系のインストール
- JRuby のインストール
◆ rbenv を使う場合の実行手順例
rbenv install --list rbenv install jruby-1.6.8 rbenv global jruby-1.6.8 rbenv rehash
- gem を用いて rsruby のインストール
sudo gem install --include-dependencies rsruby -- --with-R-dir=/usr/lib/R --with-R-include=/usr/share/R/include --with-opt-dir=/usr/share/R
試しに使ってみる (Try to use rsruby)
Ruby から R の機能を呼び出す例 (invoke R functions from Ruby)
R システムを呼び出して,CSV ファイルの読み込みと散布図の描画を行ってみる.ここでの テスト用データは,「データフレームからの散布図作成,画像ファイルに保存(R システム,ggplot,plot を使用)」に記述している Book1.csv を使っています
◆ Ubuntu の場合の実行手順例
- Book1.csv をダウンロードし /tmp に置く
- 端末を開き,次のように実行してみる
【関連する外部ページ】 https://kenai.com/projects/jruby/pages/PerformanceTuning
export R_HOME=/usr/lib/R ulimit -s unlimited irb require 'rubygems' require 'rsruby' r = RSRuby::instance r.eval_R(<<-RCOMMAND) X <- read.table("/tmp/Book1.csv", header=TRUE, sep=",", na.strings="NA", dec=".", strip.white=TRUE); plot( X[,c("seq")], X[,c("USD")] ) pdf("hoge.pdf") plot( X[,c("seq")], X[,c("USD")] ) dev.off() RCOMMAND
- 実行結果の例
Ruby から R に配列データを渡す (pass an array date as an argument from Ruby to R)
Ruby で連想配列を作り,それを R に渡して,散布図を書く.
◆ Ubuntu の場合の実行手順例
export R_HOME=/usr/lib/R
ulimit -s unlimited
irb
require 'rubygems'
require 'rsruby'
D = { "a"=>[1, 2, 3, 4, 5], "b"=>[100, 110, 105, 120, 125] }
r = RSRuby::instance
r.eval_R(<<-RCOMMAND)
# write a graph in a window
A <- matrix( c( #{D["a"].join(",")} ), 1, #{D["a"].size} )
B <- matrix( c( #{D["b"].join(",")} ), 1, #{D["b"].size} )
plot(A, B)
# write a graph in a PDF file
pdf("result.pdf", paper="a4")
A <- matrix( c( #{D["a"].join(",")} ), 1, #{D["a"].size} )
B <- matrix( c( #{D["b"].join(",")} ), 1, #{D["b"].size} )
plot(A, B)
dev.off()
RCOMMAND
