On 05.10.2012 09:30, Rolf Turner wrote:
I want to do something like: TH <- sprintf("%1.1f",c(0.3,0.5,0.7,0.9,1)) plot(1:10) legend("bottomright",pch=1:5,legend=parse(text=paste("theta ==",TH))) Notice that the final "1" comes out in the legend as just plain "1" and NOT as "1.0" although TH is [1] "0.3" "0.5" "0.7" "0.9" "1.0" I can get plotmath to preserve "1.0" as "1.0" and NOT convert it to "1" if I use substitute, as in text(2,5,labels=substitute(list(theta == a),list(a=TH[5]))) but substitute doesn't work appropriately with vectors. Can anyone tell me how to get a "1.0" rather than "1" in the legend? Ta. cheers, Rolf Turner P.S. Just figured out a way using sapply(): leg <- sapply(TH,function(x){substitute(list(theta == a),list(a=x))}) plot(1:10) legend("bottomright",pch=1:5,legend=parse(text=leg)) Note that the use of "parse" (pace Thomas Lumley! :-) ) is required --- "legend=leg" does NOT work. Getting here required an enormous amount of trial and error. And it seems pretty kludgy. Is there a sexier way?
Not sure what is sexier here. I'd stay with leg <- lapply(TH, function(x) bquote(list(theta == .(x)))) plot(1:10) legend("bottomright", pch=1:5, legend=as.expression(leg)) Best, Uwe Ligges
R. T. ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.