3

R スクリプトを、クライアントがバッチ モードで実行できるものに変換しようとしています。私のコードは一般的な関数を使用しており、最初に近いスニペットは次のようになります。

setGeneric("testInput", function(inputData, params = list())
    standardGeneric("testInput"))

R CMD BATCHを使用していますが、正常に動作します。ただし、スクリプトで出力をコンソールに出力する簡単な方法が見つからなかったため、それに基づいて (および Rscript.exe が R バッチ ファイルを実行する「適切な」方法であるという提案)、 Rscript に切り替えることにしました。ただし、まったく同じ .R ファイルを Rscript で実行すると、次のようになります。

Error: could not find function "setGeneric"
Execution halted

これにはおそらく些細な理由があることはわかっていますが、それを理解することはできません。誰かが間違いの場所を教えてもらえますか?
助言がありますか?

4

1 に答える 1

3

setGenericまたはmethodsを使用して非対話型セッションではなく、対話型セッションで R を起動すると通常ロードされるパッケージの一部です。Rscriptlittler

require(methods)そのため、スクリプトを呼び出す前に a を追加する必要がありsetGenericます。

たとえば、このコードは機能しません

Rscript -e "setGeneric('mean', function(x) standardGeneric('mean'))"
Error: could not find function "setGeneric"
Execution halted

しかし、これは動作します

Rscript -e "require(methods);setGeneric('mean', function(x) standardGeneric('mean'))"
Loading required package: methods
[1] "mean"
于 2013-07-02T16:44:52.417 に答える