5

Rserverでいくつかの計算を行う小さな Java クライアントを作成しました。この目的のために、サーバー側にファイルがあり、実際の計算を行う前にソースを取得する必要がありますfunctions.rlibraries.r

現在、新しい接続ごとにファイルをロードします。

import org.rosuda.REngine.Rserve.RConnection;

public class RserveTester {

  public void doOnRserve() {
    RConnection c = new RConnection( "rserve.domain.local" );
    c.login( "foo", "user" );
    c.eval("source(\"/home/rserve/lib/libraries.r\")");
    c.eval("source(\"/home/rserve/lib/functions.r\")");
    c.eval( "someCalculation()" )
    c.close();
  }  
}

wheredoOnRserve()は、クライアント側のいくつかのイベントにより、1 分間に数回呼び出されます。

私の質問は次のとおりです。ライブラリを一度だけソースして、個々のソースなしですべての新しい RSession 中に利用できるようにすることは可能ですか?

私はクライアント側で次のようなものを試しました:

c.serverSource("/home/rserve/lib/libraries.r" )
c.serverSource("/home/rserve/lib/functions.r" )

これにより、次の例外が発生します(これが機能しない理由はわかりevalません):

 org.rosuda.REngine.Rserve.RserveException: serverSource failed, request status: access denied (local to the server)

特定の で Rserve を開始できます.Rprofileか?

編集:

基本的に、次の 3 つの方法が考えられます。

  1. /home/rserve/.Rprofile で .r ファイルを取得します。しかし、これは私が呼び出すたびにそれらを調達するための縫い目ですnew RConnection()
  2. Rserveの起動時にソースコマンドをRに直接渡す(これを行う方法がわからない)。
  3. 私の好みの方法: serverSource() を使用してクライアント側から実行すると、これらの「アクセス拒否」例外がスローされます。

EDIT2:

Rserve バージョン v0.6-8 (338)

x86_64-pc-linux-gnu の R バージョン 2.15.2。

4

2 に答える 2

7

sourceこれは、構成ファイルに行を追加することで簡単に実行できます。

source "/foo/bar.R"

inは、起動時/etc/Rserv.confにソースになります。/foo/bar.R別の構成ファイルを使用する場合は、--RS-confコマンド ライン引数を使用して指定します。最後に、Rserve 1.x は--RS-sourceコマンド ラインのオプションもサポートしています。

ファイルパスに引用符がないと、ファイルが見つからないというエラーが発生する場合があります。

ところで:serverSource()アクセスが拒否されたと述べました-つまり、Rserveで制御コマンドを有効にしなかったことを意味します(control enable構成または--RS-enable-controlコマンドラインで)。

PS: Rserve に関する質問には、stats-rosuda-devel メーリング リストを使用してください。

于 2012-11-29T21:22:31.383 に答える
1

はい、できます。常にこれを覚えておいてください:

R> fortunes::fortune("Yoda")

Evelyn Hall: I would like to know how (if) I can extract some of the information 
             from the summary of my nlme.
Simon Blomberg: This is R. There is no if. Only how.
   -- Evelyn Hall and Simon 'Yoda' Blomberg
      R-help (April 2005)

R> 

Rserveまたは州の文書として:

\ description {デーモンモードでRserveを起動します(unixのみ)。

Rserveに関連しない追加のパラメーターは、基礎となるRに直接渡されます。構成、使用法、およびコマンドラインパラメーターについては、http://www.rforge.net/Rserveのオンラインドキュメントを 参照してください。簡単なヘルプについては、\ code {R CMDRserve--help}を使用してください。

于 2012-11-25T18:08:05.593 に答える