3

Rスクリプトを実行していますが、エラーに直面しています:

Rscript example.R "a,b,c"

a、b、c が引数として渡された文字ベクトルの要素である上記のコードを実行しています。数値 (例: 1,5,6) を渡すと、上記のコードは正常に機能します。

Code is :
library("optparse")
library("tldutils") # eval_string
# install.packages("tldutils", repos="http://R-Forge.R-project.org")
option_list <- list(
make_option(c("-c", "--count"), type="character", default="5",
help='Vector of numbers separated by commas and surrounded by ""',
metavar="number")
)
args <- parse_args(OptionParser(option_list = option_list))
print(args$c)
eval_string(sprintf("foo = c(%s)", args$c))
print(foo)

エラー:

Error in eval(expr, envir, enclos) : object 'a' not found
Calls: eval_string -> eval.parent -> eval -> eval
Execution halted

コードを編集する必要がある場所を教えてください。

4

2 に答える 2

5

あなたが求めているものを正確に理解できるかどうかはわかりませんが、これであなたが自分で詳細を理解し、問題を解決できることを願っています.

文字ベクトルを引数として R に渡す最も簡単な方法は、commandArgs関数を使用することです (基本パッケージの、特別なものをインストールする必要はありません)。

# Start R from the shell
$ R --args a,b,c

# Within R
> commandArgs()
[1] "/usr/lib64/R/bin/exec/R" "--args"                 
[3] "a,b,c"

--args使用後に指定された引数のみを取得する場合trailingOnly=TRUE。3 要素ベクトルに変換するために追加strsplitします。"a,b,c"または、カンマをスペースに変更すると、strsplit.

$ R --args a,b,c
...
> strsplit(commandArgs(TRUE), ",")[[1]]
[1] "a" "b" "c"

$ R --args a b c
...
> commandArgs(T)
[1] "a" "b" "c"
于 2012-12-12T13:47:47.653 に答える
1

スクリプトに渡す「a、b、c」は、文字列ではなく変数名として解釈されます。

編集:とにかく、a)標準入力から読み取るか、より良いb)たとえばを使用してファイルから読み取る代わりに、データを引数として渡したい理由がわかりませんread.table

于 2012-12-12T12:54:00.107 に答える