我有用R编写的程序。我可以从R GUI运行它,它会吐出结果。
有没有办法从Java运行该程序?
答案 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.frame
。 This 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();