java - REXP as List 不返回输出

标签 java r rserve jri naivebayes

我有一个 java 代码,我正在使用 Rserve 在 java.io 包中运行我的 R 代码。这是我的代码的一部分:

RConnection c = new RConnection("localhost", 6311);
c.eval("library(e1071)");
c.eval("data(HouseVotes84, package = 'mlbench')";
c.eval("model <- naiveBayes(Class ~ ., data = HouseVotes84)")
REXP t = c.eval("NBC <- model$tables");
List<Double> NBCList = new ArrayList<Double>();
t.asList().add(NBCList);
System.out.println(NBCList);

问题是它返回以下内容:

[]

正确的输出(不使用 Rserve - 直接在 R session 上运行)应该是:

$V1
        V1
Y                    n         y
  democrat   0.3953488 0.6046512
  republican 0.8121212 0.1878788

$V2
        V2
Y                    n         y
  democrat   0.4979079 0.5020921
  republican 0.4932432 0.5067568

最佳答案

请注意,这里有一些拼写错误,请在 IDE 中检查,并且您没有正确地将数据从 R 传递到 Java。

如何使用请看下面的代码,这段代码只通过了

NBC$V1[1]

将 NBC 元素放入 Java 中,您必须做大量工作才能将内容传递给 java,因为 R 的类型与 Java 不同。

请参阅以下示例,请注意,我还插入了代码,告诉您库是否已正确安装以供 Java 使用:

import java.io.File;
import org.rosuda.JRI.REXP;
import org.rosuda.JRI.Rengine;


public class RunDavid {


public static void main (String args []) {


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

 System.out.println("R_HOME =" + System.getenv("R_HOME"));
  String path =System.getenv("R_HOME") + "\\library" ;
   File folder = new File(path);
  File[] listOfFiles = folder.listFiles();

    for (int i = 0; i < listOfFiles.length; i++) {
      if (listOfFiles[i].isFile()) {
        System.out.println("File " + listOfFiles[i].getName());
      } else if (listOfFiles[i].isDirectory()) {
        System.out.println("Directory " + listOfFiles[i].getName());
      }
    }

re.eval("library(e1071)");
re.eval("data(HouseVotes84, package = 'mlbench'))");
re.eval("model <- naiveBayes(Class ~ ., data = HouseVotes84)");
re.eval("NBC <- model$tables");
REXP  t = re.eval("NBC$V1[1]");
System.out.println(t.asDouble());
}}

请告诉我这是否适合您:)

关于java - REXP as List 不返回输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31043536/

相关文章:

r - 在 R data.frame 上有效组合多个条件

java - 保留服务器 : how to terminate a blocking instance (eval taking forever)?

python - 每个 Flask session 存储大数据或服务连接

java - 当调用构造函数时会发生什么(在这种情况下概念很清晰)?

java - RCP 导出向导删除不必要的项目

java - Linux 中的类路径限制

r - lapply 函数将单个和 + 参数传递给 LM

Java sleep 行为过早

r - 如何以 Shiny 的方式正确输出 Plotly 图?

c++ - 从 Tableau 调用 Rcpp 函数时出错。如何解释和调试 Rserve 日志?