2016-09-12 3 views
0

Rscript를 설정하여 명령 줄에서 옵션을 구문 분석했습니다. 그것은 파일 이름을 잘 파싱하지만 명령 구문 분석에 의해 x 또는 y 축에 무엇을 플롯 할지를 지정하면 음모를 꾸미려고하는 필드를 인식하지 못합니다. 여기Rscript optparse ggplot

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 여기 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() 

는 데이터 파일입니다 .png "-x"name "-y"score "

답변

0

이것은 optparse의 문제가 아니며, ggplot2에서 당신을 물어 보는 지연된 평가입니다. 여기

이 해결 방법이다 : 그에서 새로운 (임시) data.frame 다음 플롯으로 optparse에서 부분 집합에 데이터를 당신이 얻을 '인용 문자열'를 사용합니다. 나는. 이 세 줄을 사용하십시오 :

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보다 훨씬 좋습니다.

enter image description here

+0

이것은 올바른 해결책입니다! 고맙습니다! –

+0

다행입니다. StackOverflow가 작동하는 방식은 눈금 (원래의 포스터에서 보는 것처럼)을 클릭하여 작동하는 답변 (또는 여러 항목 중에서 가장 좋음)을 '수락'해야한다는 것입니다. 또한 위쪽 화살표를 클릭하여 'upvote'할 수도 있습니다. 이 시스템은 더 나은 응답이 보상을 얻을 수 있도록 장점이 있습니다. –