我正在尝试编写一个带有选项的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
被遗漏了。
预先感谢