3

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

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

4

3 回答 3

6

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

于 2012-04-25T15:47:17.567 回答
2

我认为从其他环境执行 R 代码的最简单的可能性之一是 REST Web 服务。

例如,如果您有一个名为 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();
于 2018-02-19T09:15:41.007 回答
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');");

这是一个如何将数据从 Java 传递到 R 并使其看起来像data.frame. 这是如何将 R 图形重定向到 Java对象的另一个示例。Graphics2D

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

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

于 2019-01-16T11:32:28.047 回答