Sigh; that's because I forget to include it in the 'substitute' list. Here is a version that works (and has been tested...).

ourtitle <- function(title, footnotes=NULL) {
 if (length(footnotes) > 0) {
   fn <- paste(footnotes, collapse=' ')
   title <- eval(substitute(expression(bold(paste(title, ""^fn))),
                            list(title=title, fn=fn)))
 }
 title
}

Shang Gao wrote:
I tried writing that function before, but the expression() command is not preserved when we 
incorporate it into a function(). The first example you gave me, if run in R, produced a title that 
reads "title" instead of "stuff". It seems that in this case the expression() 
can't read the character string in the argument specified in the function() command.

-----Original Message-----
From: Kevin Coombes [mailto:kevin.r.coom...@gmail.com] Sent: Monday, May 10, 2010 12:08 PM
To: Shang Gao
Cc: r-help@r-project.org
Subject: Re: [R] Supercripting text

You probably want to write your own titling function to add superscripts. The following code will serve as a reasonable starting point:

# make the title expression
ourtitle <- function(title, footnotes=NULL) {
  if (length(footnotes) > 0) {
    fn <- paste(footnotes, collapse=' ')
title <- eval(substitute(expression(bold(paste(title, ""^fn))), list(fn=fn)))
  }
  title
}
# example with footnotes
tt <- ourtitle("stuff", 1:3)
plot(1, 1)
title(tt)
# example without footnotes
plot(1, 1)
title(ourtitle("stuff"))

Note that the only way I could make this work was to combine the footnote list before calling the eval-substitute-expression code; I cannot get it to work by applying things ot a list.

    Kevin

Shang Gao wrote:
Dear R users,

I recently developed a plotting function in R and introduced it to my 
coworkers. The function is designed to make plotting easier and more efficient, 
which will in turn be more cost-effective for the company. The reviews for the 
function have been positive thus far, except for one issue -- addition of 
superscripts to the title. We need superscipts in the titles sometimes to 
highlight footnotes which appear at the bottom of the plots.

The syntax for supersciprts, however, is rather cumbersome, especially in 
titles since it needs to be bolded. So far the only way of superscripting is to 
use the expression() function. But to go about formatting the text such that it 
appears bolded as a title in my plots, I would have to type in the command
text(expression(bold(paste("text for title",""^1)))....)
In some cases, the plot would require 3 footnotes to be shown, and the code 
would be
text(expression(bold(paste("text for title",""^1, " "^2, " "^3))).....)
Most of my coworkers are still in the process of picking up R, some have never 
used R before. The above commands may be a little too much for them to handle.

Is there an easier way of superscripting texts in R? It would be great if any 
of you know of alternative ways other than using the expression() function.

I greatly appreciate your help.

Thank you.

Sincerely,
Shang


        [[alternative HTML version deleted]]

______________________________________________
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.

Reply via email to