On Apr 3, 2013, at 9:06 AM, Shane Carey wrote:
> Hi,
>
> If I have data as follows:
> DATA_names<-c(
> "A mg kg"
> "B mg kg"
> "C mg kg"
> "D mg kg"
> "E mg kg"
> "F mg kg"
> "G mg kg"
> "H mg kg"
>
> How do I convert to:
> -1
> A (mg kg )
> -1
> B (mg kg )
> -1
> C (mg kg )
> -1
> D (mg kg )
> -1
> E (mg kg )
> -1
> F (mg kg )
> -1
> G (mg kg )
> -1
> H (mg kg )
>
> I have lots of elements and I need to do this automatically in a for loop
> or the like?
You haven't described the task in very much detail, so Bill Dunlap's
language-oriented (more "expressive" as it were) solution my be what
you really need. Nonetheless, this answer stays on the character-plane of
R's conceptual levels:
gsub("mg kg", "(mg kg)^-1", DATA_names)
[1] "A (mg kg)^-1" "B (mg kg)^-1" "C (mg kg)^-1"
"D (mg kg)^-1" "E (mg kg)^-1" "F (mg kg)^-1"
[7] "G (mg kg)^-1" "H (mg kg)^-1"
If you wanted these in an expression vector suitable for labels on a barplot or
such:
sapply(gsub("mg kg", "(mg kg)^-1", DATA_names),
as.expression)
expression(`A (mg kg)^-1` = "A (mg kg)^-1", `B (mg kg)^-1` = "B
(mg kg)^-1",
`C (mg kg)^-1` = "C (mg kg)^-1", `D (mg kg)^-1` = "D (mg
kg)^-1",
`E (mg kg)^-1` = "E (mg kg)^-1", `F (mg kg)^-1` = "F (mg
kg)^-1",
`G (mg kg)^-1` = "G (mg kg)^-1", `H (mg kg)^-1` = "H (mg
kg)^-1")
In practice:
> pos <- barplot(1:length(DATA_names))
> text(x=pos,y=-1, xpd=TRUE, srt=45,
labels= sapply( gsub("mg kg", "(mg
kg)^-1", DATA_names),
as.expression))
--
David Winsemius
Alameda, CA, USA