我有用 R 编写的程序。我可以从 R GUI 运行它,它会吐出结果。
有没有办法从 Java 运行该程序?
您可能想看看这三个项目。
我认为从其他环境执行 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();
您还可以使用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