我已經設法在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。