string <- "pmin(1, x)" expr <- parse(text=string)[[1]] will convert the string to an unevaluated language object.
Bill Dunlap TIBCO Software wdunlap tibco.com On Fri, Feb 27, 2015 at 11:25 PM, Alrik Thiem <alrik.th...@gmail.com> wrote: > Many thanks. Unfortunately, I cannot work directly on these expressions > since they’re only created from other strings. Would I first have to > transform these strings to unevaluated expressions? > > > > *Von:* William Dunlap [mailto:wdun...@tibco.com] > *Gesendet**:* Freitag, 27. Februar 2015 23:39 > *An:* Alrik Thiem > *Cc:* r-help@r-project.org > *Betreff:* Re: [R] Substring replacement in string > > > > If your string will always represent an R expression, you could work with > > the expression directly with functions like all.names() and substitute(). > > > > f <- function (expr) > > { > > toReplace <- setdiff(all.names(expr), c("pmin", "pmax")) > > toReplace <- grep(value = TRUE, "[a-z]", toReplace) > > names(toReplace) <- toReplace > > replacementList <- lapply(toReplace, function(name) call("-", > > 1, as.name(toupper(name)))) > > do.call(substitute, list(expr, replacementList)) > > } > > > > > In <- quote(pmin(pmax(pmin(x1, X2), pmin(X3, X4)) == Y, pmax(Z1, z1))) > > > Desired <- quote(pmin(pmax(pmin(1 - X1, X2), pmin(X3, X4)) == Y, > pmax(Z1, 1 - Z1))) > > > all.equal(Desired, f(In)) > > [1] TRUE > > > > > > > > > > > Bill Dunlap > TIBCO Software > wdunlap tibco.com > > > > On Fri, Feb 27, 2015 at 2:19 PM, Alrik Thiem <alrik.th...@gmail.com> > wrote: > > Dear R-help list, > > I would like to replace all lower-case letters in a string that are not > part > of certain fixed expressions. For example, I have the string: > > "pmin(pmax(pmin(x1, X2), pmin(X3, X4)) == Y, pmax(Z1, z1))" > > Where I would like to replace all lower-case letters that do not belong to > the functions "pmin" and "pmax" by 1 - toupper(...) to get > > "pmin(pmax(pmin(1 - X1, X2), pmin(X3, X4)) == Y, pmax(Z1, 1 - Z1))" > > Any ideas on how I could achieve that? > > Many thanks and best wishes, > > Alrik > > > ******************************** > Alrik Thiem > Post-Doctoral Researcher > > Department of Philosophy > University of Geneva > Rue de Candolle 2 > CH-1211 Geneva > > +41 76 527 80 83 > > http://www.alrik-thiem.net > http://www.compasss.org > > ______________________________________________ > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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. > > > [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.