2017-06-27 12 views
1

私はWindowsのコマンドラインからRスクリプトの引数として何百もの要素の配列を渡そうとしています。まず、何らかの方法で配列を宣言したいと思います。私はコマンドラインでそれをやっている:Rスクリプトのコマンドラインで引数として配列を渡すにはどうしたらいいですか?

set my_array=c(0,1,2,3,4,5,6,7,8,9,...,700) 

私はスクリプトを実行し、引数として配列を取得したい。

Rscript my_script my_array 

しかし、私はこのエラーメッセージは、オブジェクトmy_arrayでは、」見つかりませんでした」と言って来てみたとき。私はargs <- commandArgs(TRUE)を使用して、私のスクリプトに引数を取得する方法を知っている。私はちょうど私の宣言を認識する必要があります引数として配列 - または正しい方法でそれを宣言し、私の​​スクリプトへの引数として正しい方法でそれを渡し

おかげ

答えて

1

最初に、setを使用して端末の変数を宣言する必要があるかどうかはわかりませんが、man setページで詳しく見ることができます。

Rスクリプトに配列を渡そうとする方法はいくつかありますが、それは主にmy_arrayを端末に宣言する方法によって決まります。

$ my_array="c(0,1,2,3,4)" 
$ Rscript my_script ${my_array} 

そしてR環境へのベクトルとして引数を変換するRスクリプトでeval(parse(text=()))を使用します -


1 "my_arrayでは、" bashで文字列を指定できます。

$ my_array=(0,1,2,3,4) 
$ Rscript my_script ${my_array[*]} 

とRでargsがすでに配列が、文字型である:

args <- commandArgs(trailingOnly=TRUE) 
print(args) 
# [1] "0" "1" "2" "3" "4" "5" 
-

args <- commandArgs(trailingOnly=TRUE) 
print(args) 
# c(0,1,2,3,4,5,6,7,8,9) 

args <- eval(parse(text=args[1])) 
print(args) 
# [1] 0 1 2 3 4 5 6 7 8 9 

2 "my_arrayでは、" bashで配列にすることができます

+0

タクス、ラファエル!これはWindowsでも動作しますか? –

1

私は聞かせて、私はあなたがここで何をしようとして理解だと思います。!私が間違っているかどうかは分かります。

I c

args <- commandArgs(TRUE) 
eval(parse(text=args[1])) 
print(myarray) 

私は、(私のコマンドラインから)このようなスクリプトを呼び出すことができます

Rscript script.R myarray="c(1,3,4)" 

あなたが見ることができるように、引数:以下含まれています(script.Rと呼ばれる)Rスクリプトをreated (スクリプト内で渡されたものとその方法を見るためにprint(args)を行うことができます)、私はeval(parse(text = ...)))を使ってスクリプトを実行します(私の場合は印刷しましたが、分析やその他のことができます)。これは役に立ちますか?

+0

ありがとう、ジョイ!しかし、私の問題は、何百もの要素の配列を渡す必要があることです。したがって、 'Rscript script.R myarray =" c(1,3,4) "と同じコマンドラインで配列を宣言すると、私は必要なものすべてを宣言できませんでした。 –

関連する問題