1

Rでスクリプトに渡されたコマンドライン引数を読み取るために使用できることは知っていますが、Rでスクリプトを実行し、カスタムコマンドライン引数を使用して実行することcommandArgsにより、コマンドラインスクリプトをデバッグしたいと思います。sourceスクリプトファイルを変更せずにコマンドライン引数を変更する方法はありますか?

私のスクリプトは通常optparse、実際の引数の解析にパッケージを使用しています。

4

3 に答える 3

4

私がコメントで言ったことを拡張しようとします。

Python でスクリプトを作成する方法には、通常、ファイルがスクリプトとして実行されているかどうかの検出、引数の処理、およびファイルで定義された関数の呼び出しが含まれます。何かのようなもの:

def foo(x):
    return x*2

if __name__=="__main__":
    v = sys.argv[1]
    print foo(v)

これには、ファイルをインタラクティブな Python セッションにインポートでき、「if」ブロック内のコードが実行されないという利点があります。fooその後、関数を対話的にテストできます。

ファイルがスクリプトとして実行されているか、対話型セッションから取得されているかを R で確認する方法はありますか?

foo=function(x){
 return(x*2)
}

if(!interactive()){
 x = as.numeric(commandArgs(trailingOnly=TRUE)[1])
 print(foo(x))
}

if run withRscript argtest.R 22は 44 を出力しますが、R を対話的に実行しsource("argtest.R")て実行すると、if ブロック内のコードは実行されません。その素敵なパターン。

于 2012-08-17T07:03:48.333 に答える
3

たとえば、独自の定義で単純に上書きするのはどうですか

commandArgs <- function(trailingOnly=FALSE) { 
    args<- c("/foo/bar", "baz") 
    # copied from base:::commandArgs
    if (trailingOnly) {
        m <- match("--args", args, 0L)
        if (m) 
            args[-seq_len(m)]
        else character()
    }
    else args
} 
于 2012-08-17T06:31:54.980 に答える