【问题标题】:How to import R library when using JRI in java Eclipse?java Eclipse中使用JRI时如何导入R库?
【发布时间】:2015-06-02 20:15:56
【问题描述】:

在我的java项目中,我需要计算一个置信区间,这对于我自己编写代码来说太难了。所以我决定使用R统计中的一种方法,并将计算结果传输到我的java项目中。为此,我选择 JRI,并在我的 .java 文件中导入 Rengine 和 REXP:

import org.rosuda.JRI.REXP;  
import org.rosuda.JRI.Rengine;

现在,问题来了。我想导入“stats4”库,这样我就可以使用mle() 函数,并在我的.java 文件中编写以下代码:

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

但是,我发现stats4 从未被导入!实际上,当我们用 R 语言导入这个库时,我们可以这样写:

library("stats4")  

由于我是在 java 中使用 JRI 的新手,我不知道如何修复它。

【问题讨论】:

  • 能否请您给我们以下语句的输出:System.out.println("R_HOME =" + System.getenv("R_HOME"));

标签: r java


【解决方案1】:

请在您的 Java 代码中输入:

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());
      }
    }

它是安装在你的 Java 应用程序中的 R 版本的库文件夹中安装的包列表(你的机器中可能安装了多个 R 版本),看看输出,看看你是否可以在该列表中找到“stats4”,如果没有,请将该库安装在正确的 r 版本中,即在该文件夹中,或者只是将您的 JRI 设置更改为另一个版本。例如,这是我的库安装的输出:

 R_HOME =C:\Program Files\R\R-2.15.3   
Directory abind
    Directory amap
    Directory animation
    ..........

    Directory stats4
    Directory stringr


    ......

这意味着我已将它安装在 R 版本 2.15.3 中(是的,它是旧的 :( ),这是连接到我的 JRI 应用程序的版本,所以对我来说它可以工作。

【讨论】:

  • 非常感谢!实际上,我已经解决了这个问题。正如你所说,我没有设置正确的路径。重置我的 R_HOME 后,一切都很好:)我应该编辑我的问题并在上面发布答案吗?
猜你喜欢
  • 2018-01-17
  • 1970-01-01
  • 2011-12-12
  • 2012-03-19
  • 1970-01-01
  • 2012-05-07
  • 1970-01-01
  • 2017-05-28
  • 1970-01-01
相关资源
最近更新 更多