我如何从R脚本读取命令行参数?
我有一个R脚本,我希望能够提供几个命令行参数(而不是代码本身的硬编码参数值)。 该脚本在Windows上运行。
我找不到有关如何将命令行中提供的参数读入我的R脚本的信息。 如果无法完成,我会感到惊讶,所以也许我在Google搜索中没有使用最好的关键字...
任何指针或建议?
德克的答案就是你需要的一切。 这是一个最小可重现的例子。
我做了两个文件: exmpl.bat
和exmpl.R
。
exmpl.bat
:
set R_Script="C:Program FilesR-3.0.2binRScript.exe"
%R_Script% exmpl.R 2010-01-28 example 100 > exmpl.batch 2>&1
或者,使用Rterm.exe
:
set R_TERM="C:Program FilesR-3.0.2bini386Rterm.exe"
%R_TERM% --no-restore --no-save --args 2010-01-28 example 100 < exmpl.R > exmpl.batch 2>&1
exmpl.R
:
options(echo=TRUE) # if you want see commands in output file
args <- commandArgs(trailingOnly = TRUE)
print(args)
# trailingOnly=TRUE means that only your arguments are returned, check:
# print(commandArgs(trailingOnly=FALSE))
start_date <- as.Date(args[1])
name <- args[2]
n <- as.integer(args[3])
rm(args)
# Some computations:
x <- rnorm(n)
png(paste(name,".png",sep=""))
plot(start_date+(1L:n), x)
dev.off()
summary(x)
将这两个文件保存在同一个目录中并启动exmpl.bat
。 在结果中你会得到:
example.png
exmpl.batch
与所有完成 你也可以添加一个环境变量%R_Script%
:
"C:Program FilesR-3.0.2binRScript.exe"
并在批处理脚本中使用它作为%R_Script% <filename.r> <arguments>
RScript
和Rterm
:
Rscript
语法更简单 Rscript
在x64上自动选择体系结构(有关详细信息,请参阅R安装和管理,2.6子体系结构) Rscript
需要.R文件中的options(echo=TRUE)
几点:
命令行参数可通过commandArgs()
访问,因此请参阅help(commandArgs)
以获取概述。
您可以在所有平台上使用Rscript.exe
,包括Windows。 它将支持commandArgs()
。 littler可以移植到Windows,但现在只能在OS X和Linux上运行。
CRAN上有两个附加软件包 - getopt和optparse - 这两个软件包都是用于命令行解析的。
2015年11月编辑:新的替代品已出现,我全心全意推荐docopt。
将其添加到脚本的顶部:
args<-commandArgs(TRUE)
然后你可以参考作为args[1]
, args[2]
等传递的args[1]
。
然后运行
Rscript myscript.R arg1 arg2 arg3
如果您的参数是包含空格的字符串,请使用双引号括起来。
链接地址: http://www.djcxy.com/p/5131.html上一篇: How can I read command line parameters from an R script?