2011-08-04 39 views
0

我已经设法在R中安装RMySQL,并且它运行正常(我也安装了它所需的依赖项,DBI,它也可以正常工作)。我正在构建一个Java应用程序,通过JRI包与R进行交互(这也可以正常工作)。目前我的应用程序查询MySQL数据库,将查询结果写入文件,并将这些文件加载​​到R中(使用R中的load.csv()函数)。但是,如果R直接与MySQL交互(因此RMySQL包),该程序将更有效地运行。 我遇到的问题是,如果我尝试使用Rengine.eval()JRI函数加载它,RMySQL包将不会加载到R中。但是,Rengine.eval()函数将加载我尝试加载的任何其他库。 这里的代码片段:RMySQL包不通过JRI接口加载

Rengine re; 

re.eval("library(\"DBI\")"); // this works, DBI will load 
re.eval("library(\"RMySQL\")"); // this will not work, RMySQL fails to load 

要验证RMySQL未能加载我这样做:

REXP x; 
System.out.println(x=re.eval("library(\"DBI\")")); 
System.out.println(x=re.eval("library(\"RMySQL\")")); 

我得到以下输出:

[STRING *(“DBI ”, “统计”, “图形”, “grDevices”, “utils的”, “数据集”, “方法”, “基极”)]

可以清楚地看到,第二个println命令返回null,这意味着RMySQL无法加载(当然也没有任何RMySQL函数可以)。我不知道为什么会这样。

我不知道我在做什么错,但如果有人能告诉我问题是什么,或者如果有更好的方式通过JRI加载库,我将非常感激。

请注意,我在sparc-sun-solaris2.10和RMySQL_0.8-0版本上使用R版本2.13.0。

回答

1

通过在运行JRI之前设置环境变量R_HOME,R_INCLUDE_DIR,R_SHARE_DIR和R_DOC_DIR来解决此问题。现在工作很好。

0

我以前有过这种类型的问题。

您可能安装的RMySQL包不是正确的方式,例如

install.packages('RMySQL') 

正确的方法将是:

install.packages('RMySQL',type='source') 

我成功通过JRI i之后安装的程序包,类型为 “源”,以加载包。