【问题标题】:RMySQL package doesn't load through JRI interfaceRMySQL 包不通过 JRI 接口加载
【发布时间】:2011-10-20 05:47:56
【问题描述】:

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

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。

【问题讨论】:

    标签: java r rmysql jri


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      我以前也遇到过这种问题。

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

      install.packages('RMySQL')
      

      正确的方法是:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-10-05
        • 2012-03-19
        • 1970-01-01
        • 2013-10-06
        • 2016-09-09
        • 2013-05-30
        • 2016-04-16
        • 2015-05-12
        相关资源
        最近更新 更多