0

私はRが初めてで、JRIを使用しようとしています。JRI を通じて、「eval()」関数を使用して特定の結果を取得しました。R スクリプトを実行する場合は、「source()」を使用しました。ただし、現在、継続的に受信するデータに対してスクリプトを実行する必要がある状況にあります。「source()」は引き続き使用できますが、パフォーマンスの観点からは最適な方法ではないと思います。

私がしたことは、Rスクリプト全体をメモリに読み込んでから、スクリプトを渡す「eval()」を使用しようとすることでしたが、これは機能していないようです。スクリプトがメモリに正しく読み込まれていることを確認しました。これは、このスクリプト (メモリに読み込まれた) をファイルに書き込み、この新しく作成されたファイルを読み込むと、期待どおりの結果が得られるためです。

同じファイルを何度も読み込んでメモリから実行しないようにする方法はありますか? 私のデータユニットはそれぞれ独立しており、利用可能になり次第、独立して処理する必要があります。たくさんのデータ ユニットを収集して R スクリプトに渡すのが待ちきれません。

私はたくさん検索しましたが、これに関連するものは見つかりませんでした。この方向で私を助けることができるポインタは本当に役に立ちます.

4

1 に答える 1

0

これを処理した方法は次のとおりです-

  1. スクリプト全体を関数に含めました。
  2. プログラムの実行開始時にスクリプト ファイル (現在は関数が含まれています) をソースしました。
  3. ファイルを入手していた場所で、スクリプト自体を含む関数を呼び出すだけです-

    REXP 結果 = rengine.eval("retVal<-" + getFunctionName() + "()");

    ここで、 getFunctionName() は、スクリプトを含む関数の名前を教えてくれます。

これはメモリに読み込まれて使用できるため、スクリプトを実行するたびにスクリプト ファイルを読み込む必要はありません。スクリプトに渡される引数はすべて env として処理されます。変数。

これは回避策のようですが、私の問題は解決します。より良いオプションは大歓迎です。

于 2014-01-10T11:59:31.563 に答える