R optparse:具有相同前缀的输入和输出文件

时间:2016-03-14 16:45:49

标签: r

我有一个R脚本,它根据输入数据计算一个图。

输入数据和输出文件应具有相同的文件名,只有文件扩展名应该不同。

例如,R脚本应使用文件data.csv并生成图data.png

然而,这不起作用:

library(optparse)

option_list = list(
  make_option(c("-i", "--in_file"), type="character", default=NULL,
              help="input file", metavar="filename"),
  make_option(c("-o", "--out_file"), type="character",
              default=paste(opt$infile, ".png", sep=""),
              help="output file [default= %default]", metavar="filename")
  )

opt_parser = OptionParser(option_list=option_list)
opt = parse_args(opt_parser)

由于找不到optdata.pngdata.csv.png都未创建),因此会显示错误消息。

Error in paste(opt$infile, ".png", sep = "") : object 'opt' not found

任何想法如何解决这个问题?

编辑:忘记从代码中复制两行,现在代码已经完成。

我知道找不到opt,因为它是后来定义的。但是,我的问题仍然存在:如果没有给出其他值,我如何确保输出文件具有相同的文件名(扩展名除外)作为输入文件?

2 个答案:

答案 0 :(得分:0)

不确定它是否相关,但是"设置"应该用" sep"在你的粘贴调用。

答案 1 :(得分:0)

  

或许将默认设置为NULL,稍后在代码中使用   if(is.null(opt $ out_file))opt $ out_file< - gsub(" \ .csv $"," .png",   选择$ in_file中)

@baptiste:谢谢您的解决方案。

make_option(c("-o", "--out_file"), type="character",
            default=NULL, ...)
...
opt$out_file <- gsub("\\.csv$", ".png", opt$in_file)