Hi, May be this helps: gsub("_"," ",gsub("(.*)_.*","\\1",DATA_names)) #[1] "A ugkg" "S mgkg" "Cl mgkg" sapply(gsub("_"," ",gsub("(.*)_.*","\\1",DATA_names)),f) $`A ugkg` A ~ (mu * g ~ kg^{ -1 })
$`S mgkg` S ~ (mg ~ kg^{ -1 }) $`Cl mgkg` Cl ~ (mg ~ kg^{ -1 }) A.K. ----- Original Message ----- From: Shane Carey <careys...@gmail.com> To: "r-help@r-project.org" <r-help@r-project.org> Cc: Sent: Tuesday, July 9, 2013 7:20 AM Subject: [R] Labelling Hi, I have the following data as labels: DATA_names<-c("A_ugkg_FA","S_mgkg_XRF" ,"Cl_mgkg_XR") and I need to convert to -1 A (ug kg ) -1 S (mg kg ) -1 Cl (mg kg ) I used the following piece of code to convert the following labels in the past, but cant get it to work for the new labels: 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)) } The labels in the past were: DATA_names<-c("A_ugkg","S_mgkg" ,"Cl_mgkg") 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. ______________________________________________ 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.