【问题标题】:RCaller Java Premature end of file aka XML file is emptyRCaller Java 文件过早结束,即 XML 文件为空
【发布时间】:2013-05-29 16:00:55
【问题描述】:

我正在使用 RCaller 2.1.1-SNAPSHOT 编写程序。问题是当我使用外部库中的代码时,它说 Routput 文件为空。这是我的代码:

  Random random = new Random();


  RCaller caller = new RCaller();
  RCode code = new RCode();

  caller.setRscriptExecutable("C:/Program Files/R/R-2.14.2/bin/x64/Rscript.exe");

  double[] data = new double[100];

  for (int i = 0; i < data.length; i++) {
    data[i] = random.nextGaussian();
  }

  code.addDoubleArray("x", data);

  code.addRCode("setwd('C:/Radek/')");
  code.addRCode("wd=list.files()");
  code.addRCode("library(Biobase)");
  //code.addRCode("targets=read.AnnotatedDataFrame('targets.txt',row.names=1,as.is=TRUE)");// WHEN I USE THIS IT CRASH
  code.addRCode("my.mean<-mean(x)");
  code.addRCode("my.var<-var(x)");
  code.addRCode("my.sd<-sd(x)");
  code.addRCode("my.min<-min(x)");
  code.addRCode("my.max<-max(x)");
  code.addRCode("my.standardized<-scale(x)");

  code.addRCode(
          "my.all<-list(mean=my.mean, variance=my.var, sd=my.sd, min=my.min, max=my.max, std=my.standardized)");
  caller.setRCode(code);
  caller.runAndReturnResult("wd");

  String[] results;
  results = caller.getParser().getAsStringArray("wd");
  System.out.println("Mean is " + results[0]);

我检查了这个: 1. RUniversal 安装并加载 2.下载安装函数使用库。 3 当我将 RCaller 生成的文件中的 rCaller 请求放入 R 时,它可以工作。 4. RScript 路径中的斜线很好,因为我检查了带有注释的问题行的结果,它可以工作。

有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: java r rcaller


    【解决方案1】:

    这一般是关于 package.json 的安装程序和加载程序用户的差异。最新的实验性 RCaller 2.2.0 不需要 Runiversal。如果您的问题仍然存在,您可以试一试,如果问题仍然存在,请在此处写下。您可以点击official blog page of RCaller的链接下载

    【讨论】:

      【解决方案2】:

      在你的代码部分

      code.addRCode(
            "my.all<-list(mean=my.mean, variance=my.var, sd=my.sd, min=my.min, max=my.max, std=my.standardized)");
      caller.setRCode(code);
      
      String[] results;
      results = caller.getParser().getAsStringArray("wd");
      

      更换零件

      caller.runAndReturnResult("wd");
      

      caller.runAndReturnResult("my.all");
      

      所以你准备好的列表从 R 返回到 Java。然后使用代码

      double[] results;
      results = caller.getParser().getAsDoubleArray("mean");
      

      最后将返回的平均值打印到屏幕上

      System.out.println("Mean is " + results[0]);
      

      【讨论】:

        猜你喜欢
        • 2011-12-20
        • 1970-01-01
        • 1970-01-01
        • 2012-06-22
        • 1970-01-01
        • 1970-01-01
        • 2012-09-08
        • 2011-08-19
        相关资源
        最近更新 更多