トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

BugTrack-R備忘録/14

R備忘録 /状態空間モデリング/donlp2/その他のメモ

R備忘録 - 記事一覧

JavaからRserveを使う

  • 投稿者: みゅ
  • カテゴリ: なし
  • 優先度: 普通
  • 状態: 完了
  • 日時: 2008年12月04日 22時20分09秒

内容

JavaからRを操作する.そのときにRserveを介する方法.

Rserveとは

Rserve is a TCP/IP server which allows other programs to use facilities of R
from various languages without the need to initialize R or link against R library. 

ダウンロード

インストール

  • コマンドラインから
$ R CMD INSTALL Rserve_0.3-17.tar.gz

設定ファイルの記述

  • Rserveはデフォルトではリモート接続は拒否するようになっているみたいです.「/etc/Rserv.conf」が設定ファイルですので(なければ自分で作成、というか最初はないと思う)
 remote enable

Rserveの起動

$ R CMD Rserve
  • Rをデーモンモードで起動したよ的なメッセージが出る
  • psコマンドでもRserveが動いているかどうか確認してみましょう

Rserveの停止

  • 定型的な方法がわかりません
  • いつも「kill -9 プロセス番号」でkillしています.

Javaの準備

  • Windoows上でEclipseから使ってみることにします.

Javaのクライアント用クラスのダウンロード

  • Rserveのダウンロードのページの【Java client】から「JRclient-RF503.jar」か「JRclient-RF503.tar.gz」をダウンロード.みゅはtarのほうをダウンロード
  • 解凍すると
  • こんな感じになります.

Eclipseへの登録

  • 適当なプロジェクトを作成します
    • みゅの環境では「JRclient」
    • 「examples」はここでは使いません.
  • ソースを以下のように配置します.このとおりでなくてもいいです.エラーが出ていなければ.
  • これで準備は完了

Javaのクライアント用ソースコードを書く

  • さっき作ったRserveクライアント用クラスがあるプロジェクトに作ってもいいですが、みゅは別プロジェクトにしました.「JRclientExamples」プロジェクトです.

プロジェクト参照

  • このプロジェクトがさっき作った「JRclient」を参照できるようにします.追加ボタンから追加します.

  • 書くって言いましたけど、とりあえずさっき使わなかった「examples」フォルダのサンプルコードを使います.
  • 「examples」フォルダにある「tt.java」を適当なパッケージに配置します.
  • 「tt.java」の10行目あたりにある
Rconnection c = new Rconnection((arg.length>0)?arg[0]:"127.0.0.1"); // make new connecton
  • を、変更します.
  • 「127.0.0.1」が接続先のRserveが動いているサーバーのIPアドレスです.サーバーの名前でも設定できます.
Rconnection c = new Rconnection((arg.length>0)?arg[0]:"サーバー名"); // make new connecton
  • のようにするか
Rconnection c = new Rconnection((arg.length>0)?arg[0]:"192.168.aa.bb"); // make new connecton
  • のように(aaとbbは数字、「192.168.aa.bb」はRserveが動いているサーバーのIPアドレス)変更します.
  • この「tt.java」を実行します.みゅの環境では
Server vesion: 102
creating large data ...
assigning data ...
create matrix ...
retireve matrix ...
get as matrix ...
got: [REAL* 
attr=[LIST [INT* (2048, 1024)] <-> [NULL ]]
(0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, ・・・99.0, ... (2097052 more values follow))]
got m(2048,1024)
  • のように、コンソールに出力されて、実行が終了します.
  • サーバーが見つからない場合には、以下のエラーが出るようです.
Rserve exception: Cannot connect: No route to host: connect
  • サーバーは見つかったけど接続が拒否された場合
Rserve exception: Cannot connect: Connection refused: connect

コメント