4

RでプリインストールされたパッケージRScriptを使用しています。

コマンドプロンプトから「test.R」という名前で次のRスクリプトを呼び出したい:

a <- c("a", "b", "c")
a

args <- commandArgs(TRUE)
b <- as.vector(args[1])
b

次のコマンドを使用します。

RScript test.R c("d","e","f")

これにより、次の出力が作成されます。

[1] "a" "b" "c"
[1] "c(d,e,f)"

ご覧のとおり、最初の (そして唯一の) 引数は文字列として解釈され、1 次元のベクトルに変換されます。引数をベクトルとしてどのように解釈できますか?

補足: もちろん、ベクターの項目は複数の引数に分割できますが、最終的なプロジェクトでは、複数のベクター引数が存在します。そして、このようなものを実装することは私の最後の手段です:

RScript test.R "d" "e" "f" END_OF_VECTOR_1 "g" "h" "i" END_OF_VECTOR_2 "j" "k" "l"
4

3 に答える 3

4

コンマ区切りのリストを使用できます。

コマンドラインで:

RScript test.R a,b,c d,e,f g,h,i j

あなたのコードで:

vargs <- strsplit(args, ",")
vargs
# [[1]]
# [1] "a" "b" "c"
# 
# [[2]]
# [1] "d" "e" "f"
# 
# [[3]]
# [1] "g" "h" "i"
# 
# [[4]]
# [1] "j"
于 2014-11-01T20:11:45.097 に答える
-1

@flodel回答ありがとうございます。それが1つの方法です。それに加えて、私の問題の回避策を見つけました。

ファイル 'test.R' 内の次のコードは、引数を 'args' に格納します。次に、「args」内のテキストが通常の R 式に評価され、出力として a と b が与えられます。

args <- commandArgs(TRUE)
eval(parse(text=args))
a
b

このコードは、次のようにコマンド プロンプトで呼び出すことができます。

RScript test.R a=5 b=as.vector(c('foo', 'bar'))
于 2014-11-01T22:47:57.720 に答える