我如何从R脚本读取命令行参数?

我有一个R脚本,我希望能够提供几个命令行参数(而不是代码本身的硬编​​码参数值)。 该脚本在Windows上运行。

我找不到有关如何将命令行中提供的参数读入我的R脚本的信息。 如果无法完成,我会感到惊讶,所以也许我在Google搜索中没有使用最好的关键字...

任何指针或建议?


德克的答案就是你需要的一切。 这是一个最小可重现的例子。

我做了两个文件: exmpl.batexmpl.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>

    RScriptRterm

  • 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?

    下一篇: How to pass command line arguments to a rake task