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 <[email protected]>
To: William Dunlap <[email protected]>
Cc: "[email protected]" <[email protected]>
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 <[email protected]> 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: [email protected] [mailto:[email protected]]
> On Behalf
> > Of Shane Carey
> > Sent: Wednesday, April 03, 2013 8:02 AM
> > To: [email protected]
> > 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]]
> >
> > ______________________________________________
> > [email protected] 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]]
______________________________________________
[email protected] 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.
______________________________________________
[email protected] 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.