我创建了自己的新R库(称为“媒体”)。当我尝试使用RGui加载它时没有问题,我可以调用新包中定义的函数。这是我加载它的方式:
> library(Media)
但是,我也试图从Java/JRI代码调用这些函数,当我加载新的R包时,Java似乎没有找到pacakge,抛出消息“Error in library(Media ):找不到对象'媒体'“
这是我目前使用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()");
调用包中的函数仍然失败,因为找不到该函数。
答案 0 :(得分:3)
您可以修改库路径 - 请参阅R中的?.libPaths
,您只想将私有库添加到路径中。 GUI为您做到了这一点,但如果您在外面则不会发生。例如:
re.eval(".libPaths('c:/users/foo/Documents/R')");
然后加载你的包裹。
答案 1 :(得分:1)
您是否先正确安装了库?您可能想尝试使用lib.loc
参数。
library("Media", lib.loc = "c:/Users/Albert/Documents")
答案 2 :(得分:1)
我的解决方法是将包从我的个人库(%USERPROFILE%\ Documents \ R)复制到全局库(%R_HOME%\ library)。
这不是最好的,因为这需要管理员权限,并非所有用户都拥有......