Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javaweb应用程序中集成R_Java_R_Scala - Fatal编程技术网

在javaweb应用程序中集成R

在javaweb应用程序中集成R,java,r,scala,Java,R,Scala,我知道有很多问题类似于这个问题,但大多数问题都超过2岁,实际上没有那么大的关联 我需要做的是将R环境完全集成到现有的java(实际上是scala)应用程序中。我不想要任何基于R的web解决方案,如Rook、Rapache等,服务器逻辑严格地发生在JavaLand中。我需要的是一种向解释器发送R命令的方法,让解释器运行它们并处理输出。更重要的是,我需要能够: 以交互方式运行命令,而不仅仅是现成的R脚本 从已建立的图形包生成和处理图形 在JVM和R解释器之间来回传输原始数据 我知道。如果能收到任

我知道有很多问题类似于这个问题,但大多数问题都超过2岁,实际上没有那么大的关联

我需要做的是将R环境完全集成到现有的java(实际上是scala)应用程序中。我不想要任何基于R的web解决方案,如Rook、Rapache等,服务器逻辑严格地发生在JavaLand中。我需要的是一种向解释器发送R命令的方法,让解释器运行它们并处理输出。更重要的是,我需要能够:

  • 以交互方式运行命令,而不仅仅是现成的R脚本

  • 从已建立的图形包生成和处理图形

  • 在JVM和R解释器之间来回传输原始数据

    我知道。如果能收到任何使用过它的人的来信,我将不胜感激。它有多稳定?项目维护的积极程度如何?有我可以查看的现有代码吗?还有其他选择吗


  • 要从Java本地调用R,需要JRI。要远程调用Java,可以使用RServe。如果您想处理图形,最好使用R中的一些东西,比如evaluate包。大多数语言桥不提供处理图形的特定功能,您需要在R级别上这样做


    在您开始意识到使用跨语言桥进行科学计算的挑战和局限性之前,请先看一看。您将节省大量的麻烦。

    要从Java本地调用R,您需要JRI。要远程调用Java,可以使用RServe。如果您想处理图形,最好使用R中的一些东西,比如evaluate包。大多数语言桥不提供处理图形的特定功能,您需要在R级别上这样做


    在您开始意识到使用跨语言桥进行科学计算的挑战和局限性之前,请先看一看。你可以省去很多麻烦。

    你也可以考虑FastR,一个基于GRAALVM的R实现。这是一个来自Swing应用程序的屏幕截图,显示了R.

    的格点图。

    FastR可以像这样嵌入:

    Context ctx = Context.newBuilder("R").allowAllAccess(true).build();
    ctx.eval("R", "sum").execute(new int[] {1,2,3});
    
    您可以指示R脚本打印到给定的
    图形2D
    对象:

    ctx.eval("R", "function(g) awt(g, 400, 400)").execute(myGraphics2DObject)
    ctx.eval("R", "grid.points(1:10)")
    
    GitHub上有完整的示例:


    关于FFSTR的更多信息:

    您也可以考虑FastR,一个基于GRAALVM的R实现。这是一个来自Swing应用程序的截图,显示了R.

    的格点图。

    FastR可以像这样嵌入:

    Context ctx = Context.newBuilder("R").allowAllAccess(true).build();
    ctx.eval("R", "sum").execute(new int[] {1,2,3});
    
    您可以指示R脚本打印到给定的
    图形2D
    对象:

    ctx.eval("R", "function(g) awt(g, 400, 400)").execute(myGraphics2DObject)
    ctx.eval("R", "grid.points(1:10)")
    
    GitHub上有完整的示例:


    关于FastR的更多信息:

    尽管您的问题超出了“如何在Java中集成R”,但它有助于链接一些相关问题。实际上,这是3个问题。我很想知道是否有人可以/如何处理上面的第2点。尽管你的问题超出了“如何在Java中集成R”,但它有助于将一些相关问题联系起来。实际上,这是3个问题。我很想知道是否有人/如何处理上述第2点。我非常感谢你的回答。我不会将这个问题标记为已回答,看看是否可以在这里收集到一些类似的有用和最新的答案以供参考。非常感谢你的回答。我不会将这个问题标记为已回答,看看是否可以在这里收集到一些类似的有用和最新的答案以供参考。非常感谢你。