以下の例は、シェルスクリプトでRコードを実行する2つの方法を示しています。両方とも の例では、スクリプトが がsource()関数を介して対話型のRセッションにロードされている場合、それらを実行することなく関数を定義します。
最初の例では、他のシェル スクリプトと同じように引数を与えることができますが、追加のRオプションはRに渡されません(Rscriptは引数の1つとしてRに "--args" 。
2番目の例では、追加のRオプションを指定できますが、 引数の1つに "--args"を指定しない限り、 (無害)の警告メッセージが生成されます。特別な要件がない限り、このバージョンは避けるのが最善です。
プロトタイプRscript.r
#!/usr/bin/env Rscript
# Prototype R script for use at command line in Linux, Mac OS X, UNIX
# References:
# Manual "A Introduction to R", available via help.start() from the R Console
# Appendix "B.1 Invoking R from the command line" in "A Inroduction to R",
showArguments <- function(argv) {
print(argv)
0
}
if (! interactive()) {
# set some error return codes
SCRIPT_ERROR <- 10 # see documentation for quit()
SCRIPT_ARG_ERROR <- SCRIPT_ERROR + 1
# Define ARGV as script path concatenated to script arguments
ARGV <- commandArgs(FALSE) # start with all the arguments given to R
scriptPath <- sub("^--file=", "", grep("^--file=", ARGV, value=TRUE)) [[1]]
ARGV <- c(scriptPath, commandArgs(TRUE))
if (length(ARGV) < 2) {
cat(file=stderr(), sep="",
"Usage: ", ARGV[[1]], " [ options ] item ...\n",
" Do something with item\n",
" See script for details\n")
quit(save="no", status=SCRIPT_ARG_ERROR)
}
quit(save="no", status=showArguments(ARGV))
}
プロトタイプshellscript.r
#!/usr/bin/env R --slave --vanilla --quiet -f
# Prototype R script for use at command line in Linux, Mac OS X, UNIX
# References:
# Manual "A Introduction to R", available via help.start() from the R Console
# Appendix "B.1 Invoking R from the command line" in "A Inroduction to R",
showArguments <- function(argv) {
print(argv)
0
}
if (! interactive()) {
# set some error return codes
SCRIPT_ERROR <- 10 # see documentation for quit()
SCRIPT_ARG_ERROR <- SCRIPT_ERROR + 1
# Define ARGV as the arguments given to this script (after argument “-f”)
ARGV <- commandArgs(FALSE) # start with all the arguments given to R
ARGV <- ARGV[(grep("-f", ARGV) [[1]] + 1):length(ARGV)]
if (any(grepl("--args", ARGV))) { # remove arguments intended only for R
ARGV <- c(ARGV[[1]], commandArgs(TRUE))
}
if (length(ARGV) < 2) {
cat(file=stderr(), sep="",
"Usage: ", ARGV[[1]], " [ R_options ] --args [ options ] item ...\n",
" Do something with item\n",
" See script for details\n")
quit(save="no", status=SCRIPT_ARG_ERROR)
}
quit(save="no", status=showArguments(ARGV))
}
たぶん、あなたはLinux用のRを使用する必要がありますか? –
簡単な質問を申し訳ありませんが、LinuxとUNIX Rの違いは何ですか?私はUnixでRを実行できると信じています – SHRram
何を試しましたか? Rはunixやlinuxにうまくインストールする必要があり、 'R 'でコマンドラインからアクセスできます。また、優れたguisのいくつかを見ることもできます(私は[RStudio](http://www.rstudio.org)をお勧めします)。最後に、スクリプトの実行を簡単に行うことができます。多くの場合、 'R CMD BATCH script.R'を使用しますが、多くの選択肢とオプションがあり、よく書かれています。 – Justin