2

独自の新しい R ライブラリ (「メディア」と呼ばれる) を作成しました。RGuiで読み込んでみると問題なく、新しいパッケージで定義された関数を呼び出すことができます。これは私がそれをロードする方法です:

   > library(Media)

しかし、私はJava/JRIコードからその関数を呼び出そうとしています.新しいRパッケージをロードすると、Javaはパッケージを見つけられないようで、「ライブラリ(メディア)のエラー:オブジェクト'メディアのエラー」というメッセージがスローされます. ' 見つかりません"

これは、JRIを使用した私の現在のコードです:

    REXP rexpSetFolder = re.eval("setwd('C:/Users/Albert/Documents')");
    REXP rexpFolder = re.eval("getwd()");
    System.out.println(rexpFolder.asString());

    REXP rexpLoad = re.eval("library(Media)"); // fails

また、「setwd」コマンドがないと失敗し、既存の R 関数への単純な呼び出しは正常に機能します。WindowsでR 2.10と最新のJRI 0.5-0を使用しています。

どんな助けでも大歓迎です。どうもありがとうございました。

編集:

パラメータlib.locは機能しているようですが、少なくとも次の文はエラーを返しません。

library("Media", lib.loc = "c:/Users/Albert/Documents")

しかしその後、re.eval("myfunction()");関数が適切に見つからないため、パッケージ内の関数を呼び出しても失敗します。

4

3 に答える 3

3

ライブラリ パスを変更でき?.libPathsます。R を参照してください。プライベート ライブラリをパスに追加するだけです。GUI がそれを行いますが、外にいる場合は起こりません。例えば:

 re.eval(".libPaths('c:/users/foo/Documents/R')");

次に、パッケージをロードします。

于 2011-12-22T01:26:18.853 に答える
1

私の回避策は、個人用ライブラリ (%USERPROFILE%\Documents\R) からグローバル ライブラリ (%R_HOME%\library) にパッケージをコピーすることでした。

すべてのユーザーが持っているわけではない管理者権限が必要なため、これは最善ではありません...

于 2010-12-06T09:49:58.130 に答える
1

最初にライブラリを正しくインストールしましたか? パラメータを使用してみてlib.locください。

library("Media", lib.loc = "c:/Users/Albert/Documents")
于 2010-03-19T13:35:15.700 に答える