2011-08-04 68 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之後安裝的程序包,類型爲 「源」,以加載包。