我创建了自己的新 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/