RStudioを使用して、コマンドラインパラメータを持つRスクリプトを編集したい(例:
my_rscript --dataset mydataset
次に、オプション値をR変数に読み込みます。たとえば、dataset
ライブラリを使用して、optparse
などを入力します。
ただし、RStudioでコマンドラインを提供できる場所が見つからなかったため、「保存時のソース」機能を使用できました。代わりに、プログラム自体のすべてのプログラムパラメータをハードコーディングする必要があります。
dataset <- "mydataset"
これには、異なるデータを指定する必要があるたびにスクリプトテキストを変更する必要があります。
コマンドライン情報を提供する方法を知っている人はいますか?
私はこの質問が古く、以下のリンクが古くなっていることを知っていますが、それは質問に答えます。いいえ、RStudioからコマンドライン引数にアクセスすることはできません(または2012年1月29日現在ではできませんでした)。
今のところ私はこのようにしています:新しいRscriptを編集する新しいウィンドウを開きます。保持したい場合は、保存して次のような名前を付けることができます。test_myscript.R
これはtest_myscript.R
の内容です。
debug(getopt) # suppose I want to debug 'getopt' function in 'myscript.R'
system("myscript.R -a -b -c")
# Debug process start after this.
# Check ?browser for help about navigating inside browser
Rscript programname.r arg1 arg2 arg3
を使用してプログラムを呼び出すことができます。引数はcommandArgs
に渡されるため、次のようになります。
Rscript programname.r F N 32
> args <- commandArgs(trailingOnly=TRUE)
> args[1]
[1] F
> args[2]
[1] N
> args[3]
[1] 32
あなたが例えばを使用することに興味があるならargparserを使用し、Rstudioを使用してインタラクティブに開発/分析を続けると、次の回避策を使用できます。
my_rscript
に記述し、解析されたすべての入力を含むオブジェクトargs
を作成します。args
オブジェクトをファイルに保存する行を追加します。my_rscript
を実行し、目的の引数を指定します。args
オブジェクトをロードし、インタラクティブに続行します例:
library("argparser")
parser <- arg_parser(description='Process commandline arguments')
parser <- add_argument(parser, arg="--dataset", type="character", help = "Dataset argument")
args = parse_args(parser)
args_file = "tempArgObjectFile.rds"
saveRDS(args, args_file); print(args); quit(); #comment this after creating args_file
args = readRDS(args_file) #use this to load during interactive development
これは私のために働きました:私のRscriptは次のとおりです:
_args <- commandArgs()
print(paste0("args:", args))
print(paste0("args[1]:",args[1]))
print(paste0("args[2]:",args[2]))
print(paste0("args[3]:",args[3]))
print(paste0("# of args:",length(args)))
_
'
Rscriptで使用するコマンドライン入力をエミュレートするために、RStudioに次のように入力しました。
commandArgs <- function() c("AMZN", 10, 200)
これにより、望ましい結果が得られました。
_[1] "args:AMZN" "args:10" "args:200"
[1] "args[1]:AMZN"
[1] "args[2]:10"
[1] "args[3]:200"
[1] "# of args:3"
_
これは本当に古いですが、同じことをしようとしたときに偶然見つけたので、次のことを試してみました。人々が試してみたい場合は、素晴らしくて迅速です(おそらく、簡単なコマンドがいくつかある場合にのみ役立ちます)ただし、引数):
現在開始している私のRscriptを考えると:
args <- commandArgs(TRUE)
df <- read.csv(args[1], sep=",", check.names=FALSE, row.names = 1)
.
. # Do some analysis and plotting etc.
.
Rscriptが受信するコマンドラインをエミュレートしたい場合は、args
ベクトルを「手動で」作成できます。
args <- c("/path/to/my/inputfile.csv")
次にargs[1]
は常に持つのと同じ値を取ります。 RStudioで強調表示して実行することにより、スクリプト内の他のすべてを実行するだけです。