を使用して、インタラクティブなRグラフィックをWeb上に表示しようとしていgWidgetsWWW
ます。私の標準のRコマンドラインを使用する場合、これはすべて完全に機能します。私が使用するコードは次のとおりです。
> library(gWidgetsWWW)
> localServerOpen('Examples/ex-simple-gui.R', package='gWidgetsWWW')
ただし、このコードをJavaから呼び出したいと思います。これを行うために、JRIを設定しましたが、これは正常に機能しているようです。これを除いて、これまでに試したRコードならどれでも実行できます。
私が使用するコードは次のとおりです。
public static void main(String[] args) {
// just making sure we have the right version of everything
if (!Rengine.versionCheck()) {
System.err.println("** Version mismatch - Java files don't match library version.");
System.exit(1);
}
System.out.println("Creating Rengine (with arguments)");
Rengine re=new Rengine(args, false, new TextConsole());
Rengine.DEBUG = 1000;
System.out.println("Rengine created, waiting for R");
if (!re.waitForR()) {
System.out.println("Cannot load R");
return;
}
re.eval("library(gWidgetsWWW)");
re.eval("localServerOpen('Examples/ex-simple-gui.R', package='gWidgetsWWW')");
re.startMainLoop();
}
このコードは、期待どおりにデフォルトのブラウザで新しいタブを開きます。ただし、このタブは接続を維持し、目的のWebページを表示しません。Javaスクリプトを終了すると、ブラウザページが更新され、接続を確立できませんでした。
私のJavaコンソールで提供される出力は次のとおりです。
Rengine created, waiting for R
Rengine.eval(library(gWidgetsWWW)): BEGIN Thread[main,5,main]
Loading required package: proto
Loading required package: filehash
filehash: Simple key-value database (2.2-1 2012-03-12)
Loading required package: digest
Loading required package: rjson
Rengine.eval(library(gWidgetsWWW)): END (OK)Thread[main,5,main]
Rengine.eval(localServerOpen('Examples/ex-simple-gui.R', package='gWidgetsWWW')): BEGIN Thread[main,5,main]
starting httpd help server ... done
Rengine.eval(localServerOpen('Examples/ex-simple-gui.R', package='gWidgetsWWW')): END (OK)Thread[main,5,main]