[R] Superscript
arun
smartpink111 at yahoo.com
Thu Apr 4 14:50:27 CEST 2013
Hi,
DATA_names<-c("A_mgkg","B_mgkg","C_mgkg","D_mgkg","E_mgkg","F_mgkg","G_mgkg","H mgkg")
lapply(DATA_names,function(x) if(grepl("_",x)) f(x) else x)[1:2]
#[[1]]
#A ~ (mg ~ kg^{
# -1
#})
#[[2]]
#B ~ (mg ~ kg^{
# -1
#})
f("Na_mgkg")
#Na ~ (mg ~ kg^{
# -1
#})
A.K.
----- Original Message -----
From: Shane Carey <careyshan at gmail.com>
To: William Dunlap <wdunlap at tibco.com>
Cc: "r-help at r-project.org" <r-help at r-project.org>
Sent: Thursday, April 4, 2013 5:39 AM
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))",
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 <wdunlap at 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-bounces at r-project.org [mailto:r-help-bounces at r-project.org]
> On Behalf
> > Of Shane Carey
> > Sent: Wednesday, April 03, 2013 8:02 AM
> > To: r-help at 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 at 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 at 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.
More information about the R-help
mailing list