for (i in one:length(DATA_names))
    if ((grepl("_",DATA_names[i]))=="TRUE")
      DATA_names[i]<-f(DATA_names[i]))

  I keep getting an error saying: incompatible types (from symbol to character) 
in subassignment type fix

You didn't say what the DATA_names vector contains.  Let's say it is
   DATA <- data.frame(K_mgkg=sqrt(1:10), Zn_ugkg=log(1:10), Date=1:10)
   DATA_names <- colnames(DATA)
Note that f() takes a single character string and returns a single expression
(language object) and you are not allowed to stick expressions into vectors
of character strings.  Make a new dataset containing the expressions to use
for labels.

Try
   DATA_expressions <- as.expression(lapply(DATA_names, f))
   names(DATA_expressions) <- DATA_names
   boxplot(DATA, names=DATA_expressions)
   plot(K_mgkg ~ Date, data=DATA, xlab=DATA_expressions[["Date"]], 
ylab=DATA_expressions[["K_mgkg"]])

Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com

From: Shane Carey [mailto:careys...@gmail.com]
Sent: Thursday, April 04, 2013 2:40 AM
To: William Dunlap
Cc: r-help@r-project.org
Subject: Re: [R] Superscript


Hi William,

Im trying to run this function within a for loop as follows:

f <- function (name)
{
  # add other suffices and their corresponding plotmath expressions to the list
  env <- list2env(list(mgkg = bquote(mg ~ kg^{-1}),
                       ugkg = bquote(mu * g ~ kg^{-1})),
                  parent = emptyenv())
  pattern <- paste0("_(", paste(objects(env), collapse="|"), ")")
  bquoteExpr <- parse(text=gsub(pattern,
                                "~(.(\\1)<file:///\\1)>)",
                                name))[[1]]
  # I use do.call() to work around the fact that bquote's first argument is not 
evaluated.
  do.call(bquote, list(bquoteExpr, env))
}

for (i in one:length(DATA_names))
  if ((grepl("_",DATA_names[i]))=="TRUE")
    DATA_names[i]<-f(DATA_names[i]))

I keep getting an error saying: incompatible types (from symbol to character) 
in subassignment type fix

Have you any ideas on how to get around this, thanks again for your help, much 
appreciated.
Cheers

On Wed, Apr 3, 2013 at 5:33 PM, William Dunlap 
<wdun...@tibco.com<mailto:wdun...@tibco.com>> wrote:
Are you trying to convert a column name like "Na_mgkg" to a plot label like Na 
(mg kg^-1) ?
If so you will have to use both string manipulation functions like gsub() and 
expression manipulating
functions like bquote().  E.g.,

f <- function (name)
{
   # add other suffices and their corresponding plotmath expressions to the list
   env <- list2env(list(mgkg = bquote(mg ~ kg^{-1}),
                        ugkg = bquote(mu * g ~ kg^{-1})),
                   parent = emptyenv())
   pattern <- paste0("_(", paste(objects(env), collapse="|"), ")")
   bquoteExpr <- parse(text=gsub(pattern,
                                 "~(.(\\1)<file:///\\1)>)",
                                 name))[[1]]
   # I use do.call() to work around the fact that bquote's first argument is 
not evaluated.
   do.call(bquote, list(bquoteExpr, env))
}

d <- data.frame("Na_mgkg"=1:10, "K_ugkg"=10:1)
plot(Na_mgkg ~ K_ugkg, data=d, xlab=f("K_ugkg"), ylab=f("Na_mgkg"))

Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com<http://tibco.com>


> -----Original Message-----
> From: r-help-boun...@r-project.org<mailto:r-help-boun...@r-project.org> 
> [mailto:r-help-boun...@r-project.org<mailto:r-help-boun...@r-project.org>] On 
> Behalf
> Of Shane Carey
> Sent: Wednesday, April 03, 2013 8:02 AM
> To: r-help@r-project.org<mailto:r-help@r-project.org>
> Subject: [R] Superscript
>
> Hi,
> How do I write a superscript within gsub?
>
> I have the following: gsub("_mgkg",expression(paste("mg kg"^{-1})),names[1])
>
> Thanks
>
>
>
> --
> Shane
>
>       [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help@r-project.org<mailto: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.



--
Shane

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

Reply via email to