2010-03-19 40 views
2

我创建了自己的新R库(称为“Media”)。当我尝试使用RGUI加载时,没有任何问题,我可以调用新包中定义的函数。这是我如何加载:加载R在Java/JRI代码中自己创建的库问题

> 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()");仍然失败,因为功能没有找到。

回答

1

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

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

我会试试它,但奇怪的是,我可以在没有直接在RGUI中出现问题的情况下执行相同的代码。谢谢。 – 2010-03-19 14:59:07

+0

该句似乎与参数“lib.loc”一起使用,但之后,在包名为“media”的包中使用re.eval(“media(t)”)调用函数;仍然失败,并有消息说,它无法找到“媒体”功能... – 2010-03-22 09:00:48

1

我的工作,周围是包从我的个人图书馆(%USERPROFILE%\文件\ R)复制到全局库(%R_HOME%\库)。

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

+0

很遗憾,我没有找到解决方案(您的解决方案似乎是一个很好的解决方案)。我最终在re.eval调用中插入了函数,而不是将它们作为库的一部分(正如我试图做的那样)。 – 2010-12-09 22:33:07

3

您可以修改库路径 - 见R中?.libPaths,你只是想你的私人图书馆添加到路径。 GUI为你做,但如果你在外面,它不会发生。例如:

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

然后加载你的包。

+0

这对我很有用。但是我不得不在Windows中使用'''re.eval(“。libPaths('c:/users/foo/Documents/R/win-library/3.2')”);'。 – 2016-01-21 22:08:48