2

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

   > library(Media)

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

这是我当前使用 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()");仍然失败,因为没有正确找到该函数。

4

3 回答 3

3

您可以修改库路径 -?.libPaths在 R 中查看,您只是想将私有库添加到路径中。GUI 会为您执行此操作,但如果您在外面,则不会发生。例如:

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

然后加载你的包。

于 2011-12-22T01:26:18.853 回答
1

我的解决方法是将包从我的个人库 (%USERPROFILE%\Documents\R) 复制到全局库 (%R_HOME%\library)。

这不是最好的,因为这需要管理员权限,并非所有用户都将拥有......

于 2010-12-06T09:49:58.130 回答
1

您是否先正确安装了库?您可能想尝试使用该lib.loc参数。

library("Media", lib.loc = "c:/Users/Albert/Documents")
于 2010-03-19T13:35:15.700 回答