JRIを使ってScalaからRを使う
RをScalaから叩く方法をメモ。
JavaからRを使う Java R Interface (JRI) というライブラリを使用します。
Rの準備
まず環境変数 R_HOME を設定します。
Macの場合は以下みたいになると思います。
export R_HOME=/opt/local/Library/Frameworks/R.framework/Resources
次にJRIはRからJavaを使うパッケージ rJava についてくるので、まずRに rJava をインストールします。
install.packages('rJava')
rJavaをインストールするとMacだと /Users/
- JRI.jar
- libjri.jnilib
があるので、それをScalaプロジェクトの lib 以下にコピーします(http://scalajp.github.io/sbt-getting-started-guide-ja/library-dependencies/)。
Scala
JRIにパスを通すためにbuild.sbtに以下を追記します。
javaOptions in run += "-Djava.library.path=" + System.getProperty("java.library.path") + ":lib"
これで環境は整ったはずなのでScalaからRを使ってみましょう。
App.scalaを以下のようにします。
import org.rosuda.JRI.{ REXP, Rengine } object App { def main(args: Array[String]) { val engine = new Rengine(Array("--no-save"), false, null) val result = engine.eval("sum(c(1, 2, 3, 4))") engine.end() println(result.asDouble) } }
以上が完了したら以下を実行して 10 と表示されたら成功です。
sbt run
以下のページを参考にしました
SBT
- 作者: 竹添直樹,島本多可子
- 出版社/メーカー: 翔泳社
- 発売日: 2013/06/20
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
- 作者: Sau Sheong Chang,瀬戸山雅人,河内崇,高野雅典,橋本吉治
- 出版社/メーカー: オライリージャパン
- 発売日: 2013/04/26
- メディア: 大型本
- この商品を含むブログ (9件) を見る