繁体   English   中英

Rscript optparse ggplot

[英]Rscript optparse ggplot

我已经设置了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“名称” -y“得分”

这不是optparse的问题,而是延迟的评估使您无法从ggplot2

这是一种解决方法:使用从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))

这样我就得到了所需的图,如下所示。 噢,值得的是,我认为docoptoptparse好很多。

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM