当我用 Rscript 调用我的 R 文件时,为什么 commandArgs 使用“--slave”和“--no-restore”

Why are "--slave" and "--no-restore" being used by commandArgs when I call my R file with Rscript

我是 运行 从命令行 (linux) 使用 Rscript 的 R 脚本,如下所示:

Rscript myscript.R inputfile1.csv inputfile.csv integerArg

我的命令参数结构如下

  cmd_args <- commandArgs() 
  infile1 <- cmd_args[1]
  infile2 <- cmd_args[2]
  intArg <- cmd_args[3]

  main_func<-function(infile1, infile2, intArg){
  print(infile1)
  print(infile2)
  print(intArg)
  }

  main_func(infile1, infile2, intArg)

这打印出来

[1] "/home/miniconda3/envs/bionano_python3.0/lib/R/bin/exec/R" [1] "--slave" [1] "--no-restore"

我想我不必告诉您脚本在第一次遇到其中一个输入参数时出错。

我也试过 运行 这样的脚本,它给出了完全相同的 output/error

R --slave --no-restore --file=myscript.R --args inputfile1.csv inputfile.csv integerArg

我很困惑,因为我在调用 Rscript 时没有设置这些标志,为什么它们会出现,以及如何让 commandArgs 只读取指定的输入参数?关于如何解决这个问题的任何想法?我似乎找不到任何关于为什么会发生这种情况的信息,而且我显然只是遗漏了一些东西。提前致谢。

Rscript.

“就是这样”

一个修复:使用commandArgs(trailingOnly=TRUE)

另一个修复:使用 littler(参见 littler at CRAN,它修剪类似于 trailingOnly=TRUE 的参数并将它们留在 `argv[]

还有另一个修复方法:使用例如 docopt 来标准化选项过程(参见 docopt at CRAN.

littler repo in inst/examples 中有一堆组合 littlerdocopt 的例子。多年来,我每天都使用其中的一些。正如他们所说,“对我有用”。