0

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

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”、“stats”、“graphics”、“grDevices”、“utils”、“datasets”、“methods”、“base”)]

无效的

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

我不知道我做错了什么,但如果有人能告诉我问题出在哪里,或者是否有更好的方法通过 JRI 加载库,我将不胜感激。

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

4

2 回答 2

1

通过在运行 JRI 之前设置环境变量 R_HOME、R_INCLUDE_DIR、R_SHARE_DIR 和 R_DOC_DIR 解决了这个问题。现在工作得很好。

于 2011-09-08T12:56:03.967 回答
0

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

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

install.packages('RMySQL')

正确的方法是:

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

在我安装了类型为“source”的包后,我成功地通过 JRI 加载了包。

于 2012-01-18T11:59:23.750 回答