0

Java クライアントを予約しようとしています。次のようにRで定義された関数があります。

bar <- function(x) { x+1 }

これを R 内で実行すると、次の (期待される) 出力が得られます。

> bar(1)
[1] 2

ただし、次の Java コードを実行します。

public static void main(String[] args) throws REXPMismatchException, REngineException {
  RConnection c = new RConnection();
  REXP x = c.eval("try({bar(1)}, silent=TRUE)");
  System.out.println(x.asString());

}

次の出力が得られます。

Error in try({ : could not find function "bar"

R コンソール内に次のメッセージが出力されます。

> Error: could not find function "bar"

自分の関数を Rserve で認識できるようにするために必要なことはありますか?

スティーブ

4

2 に答える 2

0

別のワークスペース/プロセス内で関数を定義しています。Rserve と R は同じプロセス空間を共有しないため、メソッドを宣言しても Rserve ワークスペースに表示されません。

public static void main(String[] args) throws REXPMismatchException, REngineException {
  RConnection c = new RConnection();
  REXP x = c.eval("try({bar <- function(x) { x+1 }; bar(1)}, silent=TRUE)");
  System.out.println(x.asString());
}
于 2013-08-21T17:32:22.840 に答える