Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.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
R JRI:尝试使用REXP.createDataFrame从Java创建data.frames_Java_R_Rjava_Jri - Fatal编程技术网

R JRI:尝试使用REXP.createDataFrame从Java创建data.frames

R JRI:尝试使用REXP.createDataFrame从Java创建data.frames,java,r,rjava,jri,Java,R,Rjava,Jri,我试图在R中创建一个数据帧,从Java中的ArrayList获取数据 下面的代码似乎是正式的JRI测试套件(),但它甚至没有编译,例如在第一条语句中,RList没有put方法,REXP.createDataFrame方法不存在 是否有REXP.createDataFrame的更新示例?无法在线找到具体/功能示例。此外,找不到任何JRI文档 String[] Rargs = {"--vanilla"}; Rengine re = new Rengine(Rargs, false

我试图在R中创建一个数据帧,从Java中的ArrayList获取数据

下面的代码似乎是正式的JRI测试套件(),但它甚至没有编译,例如在第一条语句中,RList没有put方法,REXP.createDataFrame方法不存在

是否有
REXP.createDataFrame
的更新示例?无法在线找到具体/功能示例。此外,找不到任何JRI文档

     String[] Rargs = {"--vanilla"};
     Rengine re = new Rengine(Rargs, false, null);

     if (!re.waitForR()) {
         System.out.println("Cannot load R");
         return;
     }

     RList l = new RList();
     l.put("a",new REXPInteger(new int[] { 0,1,2,3}));
     l.put("b",new REXPDouble(new double[] { 0.5,1.2,2.3,3.0}));

     re.assign("z", REXP.createDataFrame(l));

     REXP x = re.parseAndEval("z");
     System.out.println("  z = " + x);
更新


我发现有两个
REXP
org.rosuda.JRI.REXP
org.rosuda.REngine.REXP
,后者有方法
createDataFrame(l)
,但是赋值不起作用。如何将数据帧分配给R变量?

如果有帮助:我使用JRI REngine创建数据帧的解决方案提供了如下内容:

    String[] dummyArgs = {"--vanilla"};
    REngine eng = REngine.engineForClass("org.rosuda.REngine.JRI.JRIEngine", dummyArgs, new REngineStdOutput (), false); // debug mode, print R-trace in Java

    String[] colNames = {"col1", "col2", "col3"};
    String[] col1 = {"a1", "a2", "a3", "a4"};
    String[] col2 = {"b1", "b2", "b3", "b4"};
    int[] col3 = {1, 2, 3, 4};

    REXP mydf = REXP
                .createDataFrame(new RList(
                        new REXP[] {
                                new REXPString(col1),
                                new REXPString(col2),
                                new REXPInteger(col3)},
                        colNames));

    eng.assign("myDataFrame", mydf);

    eng.parseAndEval("print(myDataFrame)");
在eclipse控制台中:

col1 col2 col3
1 a1 b1 1
2 a2 b2 2
3 a3 b3 3

4 a4 b4 4

您注意到“org.rosuda.JRI.RList”中没有“put”方法吗?请查看我发布的链接并导出相同的库