Java
で複雑な統計プロジェクトに取り組んでいます。元のコードは Rプログラミング言語 で作成しました。このコードをJava
コード(コンバーター)に変換する方法はありますか、それともR
プロジェクトでJava
を使用するにはどうすればよいですか?
私は「コンバーター」を知りませんが、Javaから直接Rコードを実行できるようにするrJavaと呼ばれるインターフェースがあります。
rJavaは、単純なRからJavaへのインターフェースです。これは、.C/.CallCインターフェースに相当します。 rJavaは、RとJava(JNI経由)の間に低レベルのブリッジを提供します。これにより、オブジェクトの作成、メソッドの呼び出し、およびRからのJavaオブジェクトのアクセスフィールド)が可能になります。 。
ある意味で、rJavaの逆はJRI(Java/Rインターフェイス)であり、JavaからRを呼び出すという反対の方向を提供します。 JRIは現在rJavaパッケージの一部として出荷されていますが、それでも個別のエンティティとして使用できます(特に開発用)。現在、rJavaは、JGR、iPlots、およびJavaGDソフトウェア/パッケージの一部として使用されています。
レンジンを試すことができます( http://www.renjin.org ):
「Renjinは、統計計算用のR言語用のJVMベースのインタープリターです。このプロジェクトは、分析および意思決定支援システムのコンサルティングを提供する会社であるBeDataDrivenのイニシアチブです。」
@Seidrが言ったように、rJavaを使用すると、Javaメソッドから直接Rコードを実行できます。
Rコンソールを開き、rJavaパッケージをインストールします
install.packages("rJava")
これで、rJavaは「Rhome\library」にあります。
Eclipseで、プロジェクトのビルドパスにJRI.jar
、JRIEngine.jar
、REngine.jar
を追加します。これらのjarファイルは「Rhome\library\rJava\jri」で入手できます。
次に、2つのベクトルを作成し、それらを追加して、別の変数に格納します。次に、その結果変数をコンソールに出力します。
Rengine engine = new Rengine(new String[]{"--no-save"},false,null);
String aVector = "c(1,2,3)";
String bVector = "c(4,5,6)";
engine.eval("a<-"+aVector);
engine.eval("b<-"+bVector);
engine.eval("c<-a+b");
System.out.println("Sum of two vectors : c = "+engine.eval("c"));
以下のリンクがお役に立てば幸いです(RをJavaに統合するためのステップバイステップの手順)。
http://www.codophile.com/how-to-integrate-r-with-Java-using-rjava/
JVMでRを実行する別のオプションは FastR です。 FastRのドキュメントによると:
FastRは、自己最適化Javaインタープリターを構築するためのフレームワークであるTruffleの上のASTのR言語の実装です。
FastRは現在、次の2つの形式で利用できます。
- RubyおよびLinuxおよびMacOS X用のJavaScript)のTruffle実装を備えたビルド済みバイナリとして。残念ながら、Windowsバージョンはまだ利用できません。
- GitHubのソースリリースとして。このオプションには、RubyまたはJavaScriptは付属していません。