私は 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")]
ヌル
明らかにわかるように、2 番目の println コマンドは null を返しています。これは、RMySQL のロードに失敗していることを意味します (もちろん、RMySQL 関数はどれも動作しません)。なぜそうなのか、私にはわかりません。
何が間違っているのかわかりませんが、誰かが問題を教えてくれたり、JRI を介してライブラリをロードするためのより良い方法があれば、とても感謝しています。
sparc-sun-solaris2.10 で R バージョン 2.13.0、および RMySQL_0.8-0 ビルドを使用していることに注意してください。