金子邦彦研究室プログラミングRuby による Web/データベース・プログラミングRuby から R の機能を呼び出す (rsruby を使用)

Ruby から R の機能を呼び出す (rsruby を使用)

この Web ページで行うこと

rsruby のインストール (Install rsruby)

Ubuntu でのインストール手順 (Install rsruby on Ubuntu System)

  1. Ubuntu で Ruby 処理系のインストール
  2. Ubuntu で R 処理系のインストール
  3. apt-get を用いて ruby1.9.1-dev, ruby1.8-dev のインストール
    sudo apt -y update
    sudo apt -y install ruby1.9.1-dev
    sudo apt -y install ruby1.8-dev
    
  4. 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
    

    [image]

    Windows でのインストール手順 (Install rsruby on Windows)

    1. Ruby と DevKit のインストール(Ruby インストーラ 3.1.2 を使用)(Windows 上): 別ページ »で説明している.
    2. Windows で R 処理系のインストール
    3. gem を用いて rsruby のインストール
      gem install rsruby  -- --with-R-dir=C:/R/R-3.0.1 --with-opt-dir=C:/R/R-3.0.1/share/R --with-R-lib=C:/R/R-3.0.1/bin/i386 --with-R-include=C:/R/R-3.0.1/include
      

      [image]
    4. Windows環境変数 PATH に次の5つが含まれていることを確認
      • C:\Ruby193\mingw\bin
      • C:\Ruby193\bin
      • C:\R\R-3.0.1\bin
      • C:\R\R-3.0.1\bin\i386
      • C:\Ruby193\lib\ruby\gems\1.9.1\gems\rsruby-0.5.1.1\lib
    5. PATH の確認

      which gcc と操作して、C:\Ruby193\mingw\bin\gcc.EXE のように表示されればOK

    試しに使ってみる (Try to use rsruby)

    Ruby から R の機能を呼び出す例 (invoke R functions from Ruby)

    R システムを呼び出して,CSV ファイルの読み込みと散布図の描画を行ってみる.ここでの テスト用データは,「データフレームからの散布図作成,画像ファイルに保存(R システム,ggplot,plot を使用)」に記述している Book1.csv を使っています

    Ubuntu の場合の実行手順例

    1. Book1.csv をダウンロードし /tmp に置く
    2. 端末を開き、次のように実行してみる
      export R_HOME=/usr/lib/R
      irb -Ku
      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
      
    3. 実行結果の例

      [image]

      [image]

    Windows の場合の実行手順例

    1. Book1.csv をダウンロードし C:\ に置く
    2. コマンドプロンプトを開き、次のように実行してみる
      irb
      require 'rubygems'
      require 'rsruby'
      r = RSRuby::instance
      r.eval_R(<<-RCOMMAND)
        X <- read.table("C:/Book1.csv", header=TRUE, sep=",", na.strings="NA", dec=".", strip.white=TRUE);
        plot( X[,c("seq")], X[,c("USD")] )
      RCOMMAND
      
    3. 実行結果の例

      [image]

      [image]

    Ruby から R に配列データを渡す (pass an array date as an argument from Ruby to R)

    Ruby で連想配列を作り,それを R に渡して,散布図を書く.

    Ubuntu の場合の実行手順例

    export R_HOME=/usr/lib/R
    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
    

    [image]

    [image]