你如何从Java运行R程序?

时间:2012-04-25 15:44:03

标签: java r

我有用R编写的程序。我可以从R GUI运行它,它会吐出结果。

有没有办法从Java运行该程序?

3 个答案:

答案 0 :(得分:5)

您可能想看看这三个项目。

答案 1 :(得分:1)

您还可以使用FastR,它是在JVM之上实现的R引擎。从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');");

This is an example,介绍如何将数据从Java传递到R,并使数据看起来像data.frameThis is another example,介绍如何将R图形重定向到Java Graphics2D对象。

本文中有更详细的描述:https://medium.com/graalvm/faster-r-with-fastr-4b8db0e0dceb

以及在GraalVM网站上:http://graalvm.org

答案 2 :(得分:0)

我认为从其他环境执行R代码的最简单方法之一是REST webservice。

例如,如果你有一个名为example.R的R-Script,它具有以下功能:

#* @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();