首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rscript optparse ggplot

Rscript optparse ggplot
EN

Stack Overflow用户
提问于 2016-09-13 02:04:35
回答 1查看 212关注 0票数 0

我已经设置了一个Rscript来从命令行解析选项。它可以很好地解析文件名,但是当我尝试通过命令解析指定要在x轴或y轴上绘制什么内容时,它无法识别我正在尝试绘制的字段。下面是Rscript

代码语言:javascript
复制
#!/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()

以下是数据文件:

代码语言:javascript
复制
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 "score”

EN

回答 1

Stack Overflow用户

发布于 2016-09-13 02:24:30

这不是你的optparse的问题,而是ggplot2的延迟评估在咬你。

这里有一个解决办法:使用从optparse获得的“带引号的字符串”,将数据子集到一个新的(临时) data.frame中,然后从中绘制。例如,使用这三行:

代码语言:javascript
复制
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好多了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39456196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档