2016-09-12 7 views
0

コマンドラインからオプションを解析するRscriptをセットアップしました。ファイル名をうまく解析しますが、コマンド構文解析でx軸またはy軸にプロットするものを指定すると、プロットしようとしているフィールドが認識されません。ここではここRscriptRscript optparse ggplot

#!/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 .png "-x" name "-y" score "

答えて

0

これはoptparseの問題ではなく、ggplot2からのあなたの質問を遅らせるものです。ここで

は、回避策です:あなたはそれから新しい(一時的な)data.frame、その後プロットにoptparse へサブセットデータから取得する「引用符で囲まれた文字列」を使用します。私。次の3行を使用してください:

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よりいいと思う価値があるもののために。

enter image description here

+0

これは正しい解決策です!ありがとうございました! –

+0

喜んで聞いてください。 StackOverflowが機能する仕組みは、あなたが元のポスターのように目盛りをクリックすることで、あなたが働いている回答を「受け入れる」ことを期待されていることです。また、上向きの矢印をクリックすることでアップボートすることもできます。システムはメリットベースであるため、より良い回答が報酬を得ることができます。 –