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))", 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> 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))", > 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 > > > > -----Original Message----- > > From: 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 > > 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 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.