Rで作成したプログラムがあります。RGUIから実行すると、結果が出力されます。
そのプログラムをJavaから実行する方法はありますか?
これらの3つのプロジェクトをご覧になることをお勧めします。
他の環境からRコードを実行する最も簡単な可能性の1つは、RESTWebサービスだと思います。
たとえば、次の関数を持つexample.RというRスクリプトがあるとします。
#* @get /hello
hello <- function() {
print("hello")
}
次を実行できます。
library(plumber)
r <- plumb("example.R")
r$run(port=8080)
その後、ページを呼び出す場合
http://localhost:8080/hello
Rコードが実行されます。
Javaから実行する場合、解決策は次のようになります。
URL url = new URL("http://localhost:8080/hello");
URLConnection connection = url.openConnection();
BufferedReader br = new BufferedReader(new InputStreamReader( (connection.getInputStream())));
String result = br.readLine();
また、JVM上に実装されたRエンジンであるFastRを使用することもできます。Javaからの使用は、次のように簡単です。
Context context = Context.newBuilder("R").allowAllAccess(true).build();
int result = context.eval("R", "sum").execute(new int[] {3,4,5}).asInt();
context.eval("R", "print('you can eval any R code here');");
これは、 JavaからRにデータを渡し、それをのように見せるための方法の例ですdata.frame
。これは、RグラフィックをJavaGraphics2D
オブジェクトにリダイレクトする方法の別の例です。
より詳細な説明はこの記事にあります:https ://medium.com/graalvm/faster-r-with-fastr-4b8db0e0dceb
およびGraalVMWebサイト:http ://graalvm.org