java - 在 Java/JRI 代码中加载 R 自己创建的库时出现问题

标签 java r rjava jri

我创建了自己的新 R 库(称为“Media”)。当我尝试用RGui加载它时没有问题,并且可以调用新包中定义的函数。这就是我加载它的方式:

   > library(Media)

但是,我也尝试从 Java/JRI 调用该函数代码,当我加载新的 R 包时,Java 似乎没有找到该包,抛出消息“库(媒体)中的错误:未找到对象‘媒体’”

这是我当前使用 JRI 的代码:

    REXP rexpSetFolder = re.eval("setwd('C:/Users/Albert/Documents')");
    REXP rexpFolder = re.eval("getwd()");
    System.out.println(rexpFolder.asString());

    REXP rexpLoad = re.eval("library(Media)"); // fails

如果没有“setwd”命令,它也会失败,并且对现有 R 函数的简单调用可以正常工作。我在 Windows 下使用 R 2.10 和最新的 JRI 0.5-0。

如有任何帮助,我们将不胜感激。 非常感谢。

编辑:

参数lib.loc似乎可以工作,至少这句话不会返回错误:

library("Media", lib.loc = "c:/Users/Albert/Documents")

但此后,使用 re.eval("myfunction()"); 调用包中的函数仍然失败,因为未正确找到该函数。

最佳答案

您可以修改库路径 - 请参阅 R 中的?.libPaths,您只需将您的私有(private)库添加到该路径即可。 GUI 会为您完成此操作,但如果您在外面,则不会发生这种情况。例如:

 re.eval(".libPaths('c:/users/foo/Documents/R')");

然后加载你的包。

关于java - 在 Java/JRI 代码中加载 R 自己创建的库时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2477398/

相关文章:

java - 新的 REngine 启动并立即停止

java - 在JAVA中存储格式化名称的数组?

java - 如何使用 Spring Data 多次保存同一个对象?

java - @org.testng.annotations.Test 和 @org.junit.Test 问题

r - "vectorize"具有不同参数长度的函数的最快方法

java - ls(envir = envir, all.names = private) 错误 : invalid 'envir' argument in R

java - 获取对象中的 SUM 值

r - 以与输入R时相同的格式输出R中的向量

r - DT 在 Shiny 和 R : Custom number formatting

rJava 可以在 RStudio 中加载但不能在 R 中加载,操作系统是 Ubuntu 14.04.1 LTS