RとJava

SJava

Rとjavaをつなげるパッケージ.非常に有用なパッケージだと思われますが インストール,運用ともに情報が少ないようです. 

インストール

linux版

Fedora core 1上で R-1.9.0にインストールしてみました.まだ,classpathの設定でつまって動きませんが,Vine では,swing,awt以外はうごいたので,じきにうまくいくでしょう.riki 2004-04-25 (日) 23:21:22

CLASSPATHの設定とLD_LIBRARY_PATHの設定をしたら, とりあえず下記テストコードまではうまくいきました.riki 2004-04-26 (月) 17:45:08

下記を実行してSJavaのインストールする。この時、-cを忘れないようにする。-cを忘れると、必要なシンボリックリンクができず、JavaからRを呼ぶときに失敗してしまう。

>R INSTALL -c SJava_0.67-3.tar.gz
  • LD_LIBRARY_PATHを設定

例えば, .bash_profileに下記を追記

LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/lib/R/library/SJava/libs:/usr/java/j2sdk1.4.2_04/jre/lib/i386:/usr/java/j2sdk1.4.2_04/jre/lib/i386/client
  • CLASSPATHを設定

例えば ,.bash_profileに下記を追記

SJAVA=/usr/lib/R/library/SJava
CLASSPATH=${CLASSPATH}:/usr/java/j2sdk1.4.2_04/lib:${SJAVA}:${SJAVA}/Jars/Environment.jar:${SJAVA}/Jars/antlr.jar:${SJAVA}/Jars/jas.jar:${SJAVA}/Jars/jhall.jar:.
  • Rを実行して, testする.
>library(SJava)
>.JavaInit()
>.Java("java.lang.System", "getProperty", "java.class.path")
>names(.Java("java.lang.System", "getProperties"))

windows版

MacOS X版

Simon's PagesにSJavaをMacOS Xで動かすパッチがあります。 ここから SJava_0.65-X.tar.gzをもらってきて、(R-1.9.0なら)

sudo /Library/Frameworks/R.framework/Resources/bin/R INSTALL -c ~/Desktop/SJava_0.65-X.tar.gz

で普通にインストールできます。 ただし、Apple JavaのDeveloper Previewとかいろいろ試している人は、

/System/Library/Frameworks/JavaVM.framework/Headers/jni.h

のシンボリックリンクの実体がなくなってたりしますので、ADCなどから適宜DeveloperバージョンのJavaをとってきてインストールするなどして実体がある状態で実行しましょう。

なお、javacなどを使うときのCLASSPATHは、バージョンが若干古いため、

 SJAVA=/Library/Frameworks/R.framework/Resources/library/SJava/
CLASSPATH=.:${SJAVA}:${SJAVA}/org/omegahat:${SJAVA}/org/omegahat/Jars/Environment.jar:${SJAVA}/org/omegahat/Jars/antlr.jar:${SJAVA}/org/omegahat/Jars/jas.jar:${SJAVA}/org/omegahat/Jars/jhall.jar:

とかになります。

一応、VectorとかSystem.outとかは正常に動いているようですが、awt.Windowとか、awt.Frameのコンストラクタを呼ぶと固まります...(Java 1.4.2)。 RJavaDevice?がうまく動けば日本語が通るかもしれないと期待したんですが...

javaからRを動かす

サンプルプログラム (Q&Aに高階が書いたものを転載)

import org.omegahat.R.Java.*;

public class REvalSample {
   public static void main(String [] args) {
       String [] rargs = {"--slave", "--vanilla"};

       System.out.println("Sample program to call R engine from Java");
       ROmegahatInterpreter interp
           = new ROmegahatInterpreter(ROmegahatInterpreter.fixArgs(rargs),
                                      false);

       REvaluator e = new REvaluator();
       
       Object val = e.eval("x <- sin(seq(0, 2*pi, length=30))");
       val = e.eval("x * 2.0");
            
       if (val != null) {
           double[] objects = (double[])val;
           for (int i=0; i<objects.length; i++) {
               System.err.println("("+i+") " + objects[i]);
           }
       }
   }
}

サンプルプログラムのコンパイル

CLASSPATHが正しく設定されていることを確認して、javacでコンパイル。

javac REvalSample.java

サンプルプログラムの実行

SJavaのインストール先が /usr/local/lib/R/library/SJava の場合は以下の様に入力する。

/usr/local/lib/R/library/SJava/scripts/RJava --class REvalSample
  • 上記プログラム実行したのですが、
    Error in dyn.load(x, as.logical(local), as.logical(now)) :
           unable to load shared  library "/usr/local/lib/R/library/ctest/libs/ctest.so":
     /usr/local/lib/R/library/ctest/libs/ctest.so: undefined symbol: Rf_imax2
    In addition: Warning message:
    package methods in options("defaultPackages") was not found
    Error in library(ctest) : package/namespace load failed
    のようなエラーが出てライブラリが読み込めていないようです。どこを設定すればよいのでしょう?m(__)m -- あなご? 2004-05-26 (水) 11:09:55
  • コンパイルと実行の仕方を追加してみました。念のために確認しますが、あなごさんは、RJavaから実行しましたよね? あなごさんのエラーメッセージは前にSolarisで見たことがあります。ちょっと調べてみます。 -- 高階? 2004-05-26 (水) 12:06:55
  • 高階さま、RJavaから実行しましたところ、同じエラーが出ました。ちなみにRedHat7.2+R-1.8.1+SJava-0.67-3です。すみませんが、よろしくお願いいたします。_(_^_)_ -- あなご? 2004-05-26 (水) 14:28:33
  • SJAVAのインストールは成功したのですが、loadに失敗しました。win版のCLASSPATHの設定を教えていただけないでしょうか。よろしくお願いいたします。(エラーメッセージ内容)using JAVA_HOME = C:?j2sdk1.4.2_04 Error in dyn.load(x, as.logical(local), as.logical(now)) :unable to load shared library "C:/PROGRA~1/R/rw1090/library/SJava/libs/SJava.dll": LoadLibrary? failure: 指定されたモジュールが見つかりません。Error in library(SJava) : .First.lib failed -- ? 2004-05-26 (水) 14:40:21
  • 思い出しました。共有ライブラリの問題ではないでしょうか。あなごさんのRはconfigure --enable-R-shlibしてから作っていると思いますが、いちど、shlibなしでRを作ってから、enable-R-shlibしても、各libraryの.soファイルからlibR.soへされないので、make distclean するか、Rのソースを消してから、最初から作り直さないといけないという問題がありました。 -- 高階? 2004-05-26 (水) 17:53:02
  • 高階さま、ありがとうございます。_(_^_)_ Rの--enable-R-shlibが抜けていたようです。コンパイルしなおしたところ、エラーは出なくなりました。が、上記プログラムを
    Object val=e.eval("t.test(1:10,y=c(7:20))");
    のように変更したところ、
    Unexpected Signal : 11 occurred at PC=0x401d6a83
    Function name=unicode_length__4UTF8PCc
    Library=/usr/java/jdk1.3.1_08/jre/lib/i386/client/libjvm.so
    のエラーが出るようになりました。ちなみにj2sdk1.4.1_02でも同様です。なにか解決の糸口になるようなヒントはございませんでしょうか?<m(__)m> -- あなご? 2004-05-26 (水) 19:06:05
  • 橙さんのWINDOWS版に関して。私も同様のエラーが出ていたのですが、以下の環境変数を設定することでとりあえずは動くようになりました。(当方の環境です。OSはWinXP) -- どうむ 2004-05-26 (水) 19:30:23
    JAVA_HOME=C:?j2sdk1.4.1_03
    CLASSPATH=%CLASSPATH%;
        "C:?Program Files?R?rw1081?library?SJava";
        "C:?Program Files?R?rw1081?library?SJava?org?omegahat?Jars?antlr.jar";
        "C:?Program Files?R?rw1081?library?SJava?org?omegahat?Jars?Environment.jar";
        "C:?Program Files?R?rw1081?library?SJava?org?omegahat?Jars?jas.jar";
        "C:?Program Files?R?rw1081?library?SJava?org?omegahat?Jars?jhall.jar";
        "C:?Program Files?R?rw1081?library?SJava?org?omegahat?Jars?ROmegahatExamples.jar"
    pathに以下を追加
        C:?j2sdk1.4.1_03?jre?bin?client
  • どうむさん、どうもありがとうございます。動くようになりました。 -- ? 2004-05-27 (木) 11:09:16
  • R(D)COM + α でゴチャゴチャとやってきたけれど、これはシンプルでよさそうですね。 -- 2004-05-27 (木) 19:03:24
  • さきの質問ですがコンパイルは通るのですが実行時にエラーが出るということです。わかりづらくもうしわけありません。 -- あなご? 2004-05-28 (金) 11:40:50 その後、
    Object val=e.eval("t.test(1:10,y=c(7:20))");
    Object val=e.eval("t.test(1:10,y=c(7:20))[[1]]");
    のように、変更すると実行時にもエラーがでなくなりました。上の方の戻り値はリスト、下のほうはベクトルです。戻り値の型によってエラーが出るようです。
  • Win32 で利用されている方は Ripley のバイナリを利用しているのでしょうか? -- 2004-05-28 (金) 22:45:19
  • Windows環境でSJavaを使うにはjvm.dllへのパスが環境変数PATHになければいけないようです。 -- かくれR狂? 2004-05-29 (土) 19:38:17
  • javaからRを動かすサンプルプログラムをコンパイルすると以下のエラーが出ます。Rを呼べません。解決方法をご存知の方は教えてください。どうぞよろしくお願いします。JavaLoading? RInterpreter library java.lang.UnsatisfiedLinkError?: no RInterpreter in java.library.path at java.lang.ClassLoader?.loadLibrary(ClassLoader?.java:1491) at java.lang.Runtime.loadLibrary0(Runtime.java:788) at java.lang.System.loadLibrary(System.java:834)at org.omegahat.R.Java.ROmegahatInterpreter?.<clinit>(ROmegahatInterpreter?.java:34)at org.omegahat.R.Java.REvalSample?.main(REvalSample?.java:12)Exception in thread "main" -- ? 2004-06-01 (火) 16:34:06
  • 私の説明が不十分だったかもしれません。以下の環境変数を、チェックしてみてください。とおっていなければ設定してみてください。 -- どうむ 2004-06-01 (火) 17:31:21
    CLASSPATH
        C:?Program Files?R?rw1081?library?SJava;
        C:?Program Files?R?rw1081?library?SJava?org?omegahat?Jars?antlr.jar;
        C:?Program Files?R?rw1081?library?SJava?org?omegahat?Jars?Environment.jar;
        C:?Program Files?R?rw1081?library?SJava?org?omegahat?Jars?jas.jar;
        C:?Program Files?R?rw1081?library?SJava?org?omegahat?Jars?jhall.jar;
        C:?Program Files?R?rw1081?library?SJava?org?omegahat?Jars?ROmegahatExamples.jar
    
    JAVA_HOME
        C:?j2sdk1.4.1_03
    path
        C:?j2sdk1.4.1_03?jre?bin?client;
        C:?Program Files?R?rw1081?library?SJava?libs;
        C:?Program Files?R?rw1081?bin
    
    R_HOME
        C:?Program Files?R?rw1081
    
    SJAVA
        C:?Program Files?R?rw1081?library?SJava
  • どうむさん、上記の設定して、前回のエラーはなくなりました。ありがとうございます。が、新たに“致命的エラー”が出てしまいました。同じ経験等ある方、教えてください。同じエラー内容です→<http://tolstoy.newcastle.edu.au/R/help/04/05/0857.html>よろしくお願いいたします。JavaからRをうまくcallできた方はいらっしゃいますか? -- ? 2004-06-03 (木) 15:05:17
  • 現在、http://www.omegahat.org/RSJava/ においてwindows版バイナリへのリンクが切れています。webarchive.org等もあたってみましたがだめでした。どなたかご存知の方はいらっしゃいますでしょうか?(ちなみにconfigure,makeにも失敗して試行錯誤中です。) -- taniguchi? 2006-03-16 (木) 19:30:15
  • 2.3.0でのRからのINSTALLコマンドの呼び出しは"R CMD INSTALL <option>"となっております。 -- higebobo? 2006-05-11 (木) 11:57:31
  • Vine Linux に R-2.3.1 JDK1.5.0_08という環境でSJava_0.69-0をインストールしました.http://www.ht.sfc.keio.ac.jp/~niya/niyalist/2006/09/sjavavine_linux.html こちらが詳細です. -- M.Ito? 2006-09-28 (木) 03:14:32

Eclipse での実行

  • Win32 上のEclipse で動作させている方おられます? -- 2004-05-29 (土) 19:53:15
  • eclipseで動作させています。Javaのビルドパスにantlr.jar,Environment.jar,jas.jar,jhall.jarを追加します。${R_HOME}/library/Sjava以下をツリー構造のままインポートします。でも'unable to open base package'がでてSjava自体を作り直す必要があるようです。
    参考:https://stat.ethz.ch/pipermail/r-help/2003-July/034938.html
    -- かくれR狂? 2004-06-06 (日) 07:30:08
  • ありがとうございます。私も同様に'unable to open base package'が出ましたので、SJAVAを書き換えて試してみます。作り直すことによって、eclipeで動くようになったのでしょうか?>かくれR狂さん -- ? 2004-06-06 (日) 23:01:31
  • bugが修正されたコンパイル済みのSJAVAをダウンロードできるサイトとかありますでしょうか?windowsなので、recompileするのが大変なので、ご存知の方、教えていただきたいと思います。どうぞよろしくお願いします。 -- ? 2004-06-09 (水) 01:15:31
  • iPlots に jvm.dll の検出のバグを修正したバイナリがあります。 -- 2004-06-11 (金) 18:02:53
  • ipotのSJava (0.65, modified):を使用しても同じエラーメッセージに'unable to open base package'が出てしまいます。。 -- 2004-06-12 (土) 02:20:40

Java Beans

  • SJava を Java Beans で利用されている方はおられますか? -- 2004-06-11 (金) 13:19:44

Rからjavaを動かす

R Graphics Device using Java

ダウンロード

インストール


rJava:rJava - Low-level R to Java interface 旧サイト

  • SJAVAのサブセットだが、R から Java の呼び出し機能をサポート。
  • JGRに含まれている。Win 用の JGR をインスールすれば、R に自動的にインストールされる。
  • CRANからでも入手可。

利用ツール・パッケージ

リンク

JRI(Java/R Interface)

  • Java から Rの呼び出し機能をサポート。
  • CRAN の rjava パッケージに含まれる。
  • JGRにも含まれている。Win 用の JGR をインスールすれば、R に自動的にインストールされる。
  • 単独での利用サンプルはソースに含まれている。残念ながら現状ではこのサンプルのみだが、将来的にはドキュメントが用意される予定だが、メーリングリストのアーカイブや質問ができる。

プログラミングの例

利用アプリ

SJava または rJava/JRI を利用しているパッケージ

iPlots

  • 対話型統計グラフ。EDA(探索的データ解析対応)。
  • CRAN より入手可。
  • JGRにも含まれている。Win 用の JGR のインスールすれば、R に自動的にインストールされる。
  • 主要な関数である iplot 引数は plot 関数と同等な機能を持ち、引数の指定も同じ。
  • "xlab","ylab" 引数で軸名が指定できるが、日本語表示には対応していないようだ*1
  • 対話性にすぐれ、マウスを使って対話的にズームイン・アウト、グラフ上のオブジェクトの選択(ポイント・矩形による)して、情報表示、移動が可能。
  • iobject によるグラフの注釈機能。
  • maptools などにも対応予定で対話的な処理ができるようになる。ESDA(探索的空間データ分析)もできる?
  • 使用方法
>library(iplots) # iplots パッケージのロード
>data(iris)
>attach(iris)
>iplot(Sepal.Width, Petal.Width)
iplots_graph_ex1.png

図 iplots 実行例

R AnalyticFlow

StatET: R 用 Eclipse プラグイン コンソール出力。

ant: Version of ant specific to R

JavaGD

  • Java 用グラフィックデバイス
  • JGRに含まれている。Win 用の JGR のインスールすれば、R に自動的にインストールされる。
  • JavaプログラムよりすべてのRグラフィックスコマンドが実行可能。
  • R Analytic Flow

JGR(Java Gui for R)

R 用汎用GUI(iplots, rJava, JavaGD を利用)

Mac 版は,http://www.rosuda.org/JGR/1.0/CRAN/JGR-1.0.dmg

Mac OS X 10.3 (Panther) download:
   - binary for CRAN release of R 2.0.0: JGR-1.0.dmg (ca. 2.3MB, updated 2004/10/18)

 CRANよりソースが入手可能。

Linux版のインストール

インストールにはヘッダファイルが必要なので、j2reではなくj2sdkをインストールしておく。環境変数JAVA_HOMEとPATHが正しくセットされているとする(他のJavaアプリが正しく動作していればおそらくOK)。スーパーユーザ権限でRを起動し、

> install.packages("JavaGD",contriburl="http://www.rosuda.org/R/")
> install.packages("rJava",contriburl="http://www.rosuda.org/R/")
> install.packages("JGR",contriburl="http://www.rosuda.org/R/")

と入力する。

JGRで日本語

mailing list(Developer 向け) 要登録

利用パッケージ

CADStat: Provides a GUI to several statistical methods for biological inferences

Deducer: An intuitive graphical data analysis system for use with JGR.

  • DeducerSpatial? OSM(Open Street Map) /Bingの地図画像を R で表示し、グラフィックをオーバレイ表示

Rserve

 Java より R を呼び出す。CRAN より入手可。

利用アプリ

Biocep Computational Open Platform Ecosystem

 上記の R と Java の連携技術の集大成のようなもの

RWebServices:Expose R functions as web services through Java/Axis/Apache

renjin JVM-based Interpreter for the R Language for Statistical Computing

JDBC

RJDBC

RpgSQL: DBI/RJDBC interface to PostgreSQL Database

JRuby

Jython

  • rJython rjava 利用
  • rSymPy?: R interface to SymPy? computer algebra system

joris - Java ongoing R infrastructure set

rscript - Java to R scripting interface

JavaFX

 いずれはなにかがある?

関連リンク


*1 JGR 内では可能

添付ファイル: fileiplots_graph_ex1.png 2951件 [詳細] filefor-select.jpg 1376件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Google
WWW を検索 OKADAJP.ORG を検索
Last-modified: 2015-03-01 (日) 01:15:59 (1541d)