繁体   English   中英

当我用 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”

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

我也尝试过像这样运行脚本,它给出了完全相同的输出/错误

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

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

“这就是它的方式” Rscript

一种解决方法:使用commandArgs(trailingOnly=TRUE)

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

另一个解决方法:使用例如标准化选项过程的docopt (请参阅CRAN 的 docopt

在 inst/examples的 littler 存储库中有很多结合littlerdocopt的示例。 多年来,我每天都使用其中的一些。 正如他们所说,“为我工作”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM