使用Eclipse和Rserve从Java调用R的简单程序


问题内容

我的应用程序必须执行R操作,例如:

m = matrix(sample(0:1,100, rep=T),ncol=10)

结果应可用于Java应用程序。

由于Rserve包充当TCP /
IP服务器,因此Rserve包将R桥接到其他语言。我已经阅读了该网站,但不知道如何制作可以使用Rserve的最简单的应用程序。

制作使用Rserve从Java执行R命令的简单Eclipse应用程序需要执行哪些步骤?


问题答案:

在下载部分有一个Rserve的二进制版本(www.rforge.net/Rserve/files/我具有R 2.13和Windows
xp版本,因此我需要下载Windows二进制文件:Rserve_0.6-8.zip(541.3kb,已更新:2012年4月18日星期三07:00:45))。将文件复制到包含R.DLL的目录中。从CRAN安装Rserve之后

install.packages("Rserve")

在R中(我有RStudio-方便的地方:下载RStudio
IDE
)。从R内部启动Rserve,只需键入

library(Rserve)
Rserve()

请在任务管理器中运行-
Rserve.exe。在Eclipse中创建Java项目后,在该项目下创建一个名为lib的目录。将2个jar粘贴到RserveEngine.jar和REngine.jar(www.rforge.net/Rserve/files/)。不要忘记在Java项目的Properties中添加此jar。在新的班级代码中:

import org.rosuda.REngine.*;
import org.rosuda.REngine.Rserve.*;

public class rserveuseClass {
    public static void main(String[] args) throws RserveException {
        try {
            RConnection c = new RConnection();// make a new local connection on default port (6311)
            double d[] = c.eval("rnorm(10)").asDoubles();
            org.rosuda.REngine.REXP x0 = c.eval("R.version.string");
            System.out.println(x0.asString());
} catch (REngineException e) {
            //manipulation
        }

    }
}