我有一个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)
由于找不到opt
(data.png
和data.csv.png
都未创建),因此会显示错误消息。
Error in paste(opt$infile, ".png", sep = "") : object 'opt' not found
任何想法如何解决这个问题?
编辑:忘记从代码中复制两行,现在代码已经完成。
我知道找不到opt
,因为它是后来定义的。但是,我的问题仍然存在:如果没有给出其他值,我如何确保输出文件具有相同的文件名(扩展名除外)作为输入文件?
答案 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)