通过optparse库读取文件

时间:2019-03-31 00:35:53

标签: r stdin optparse

我正在尝试编写一个带有选项的Rscript,但是文件中只有一个强制性参数(并且我不想为此标记)。
该文件将被其他包读取,并且应该在真实文件中(没有stdin),但是如果它来自stdin(例如来自管道)或其他文件,我也想读取该文件真实路径的文件名。
例如:

  

$ Rscript myscript.r -a 1 -b 2 file.txt

  

$ Rscript myscript.r -a 1 -b 2

  

$ cat file.txt | Rscript myscript.r -a 1 -b 2

所以我正在尝试这种方式(如下):

#!/usr/bin/env Rscript --vanilla

library("optparse")

option_list = list(
        make_option(c("-f", "--format"), 
                    type="character", 
                    default="fasta",
                    help="output file name [default= %default]", 
                    metavar="character")
);

opt_parser = OptionParser(usage = "%prog [options] file", option_list=option_list);
opt = parse_args(opt_parser,  positional_arguments = TRUE);

if (is.null(opt$args)) { 
  data_file <- tempfile()
  on.exit(unlink(data_file))
  writeLines(readLines(file("stdin")), con = data_file)
  print(temp)
} else {
  data_file <- opt$args
}

但是stdin之后的parse_args被遗漏了。

预先感谢

0 个答案:

没有答案