我已经设置了一个Rscript来解析命令行中的选项。它解析文件名很好,但是当我尝试通过命令解析指定在x或y轴上绘制的内容时,它不会识别我想要绘制的字段。这是Rscript
#!/usr/bin/Rscript --vanilla
library(ggplot2)
library("optparse")
option_list = list(
make_option(c("-f", "--file"), type="character", default=NULL,
help="dataset file name", metavar="character"),
make_option(c("-o", "--out"), type="character", default="out.txt",
help="output file name [default= %default]", metavar="character"),
make_option(c("-x", "--x_axis"), type="character", default="name",
help="x axis value [default= %default]", metavar="character"),
make_option(c("-y", "--y_axis"), type="character", default="score",
help="y axis value [default= %default]", metavar="character")
);
opt_parser = OptionParser(option_list=option_list);
opt = parse_args(opt_parser);
data <- read.table(opt$file, header=TRUE)
p <- ggplot( data, aes( x=factor( opt$x_axis), opt$y_axis))
p + geom_boxplot()
这是数据文件:
character name score
A 54 3.589543
B 54 3.741945
C 60 3.585833
D 60 3.655622
这是命令行:
./ boxplot.R -f“file.txt”-o“test.png”-x“name”-y“得分”
答案 0 :(得分:0)
这不是optparse
的问题,而是延迟评估从ggplot2
咬你。
以下是一种解决方法:使用&quot;引用的字符串&#39;你从optparse
到
将您的数据子集化为新的(临时)data.frame
,然后从中进行绘图。即使用这三行:
data <- read.table(opt$file, header=TRUE)
newdata <- data.frame(x=as.factor(dataset[, opt$x_axis]),
y=dataset[,opt$y_axis])
p <- ggplot( newdata, aes(x=x, y=y))
随后我得到了所需的情节,如下所示。哦,值得我认为docopt
比optparse
好很多。