Hi Alrik,
With the Biostrings/IRanges infrastructure (Bioconductor packages), you
can do this with:
library(Biostrings)
x0 <- BString("pmin(pmax(pmin(x1, X2), pmin(X3, X4)) == Y, pmax(Z1,
z1))")
donttouch_words <- c("pmin", "pmax")
## Extract the substrings to modify (target substrings).
donttouch_regions <- reduce(do.call("c", lapply(donttouch_words,
matchPattern, x0)))
target_regions <- ranges(gaps(donttouch_regions))
target_substrings <- extractAt(x0, target_regions)
## Modify them.
old <- paste0(letters, collapse="")
new <- paste0(LETTERS, collapse="")
target_substrings <- chartr(old, new, target_substrings)
## Replace in original string.
x1 <- replaceAt(x0, target_regions, target_substrings)
Then:
> x1
57-letter "BString" instance
seq: pmin(pmax(pmin(X1, X2), pmin(X3, X4)) == Y, pmax(Z1, Z1))
> as.character(x1)
[1] "pmin(pmax(pmin(X1, X2), pmin(X3, X4)) == Y, pmax(Z1, Z1))"
Hope this helps,
H.
On 02/27/2015 02:19 PM, Alrik Thiem 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.
--
Hervé Pagès
Program in Computational Biology
Division of Public Health Sciences
Fred Hutchinson Cancer Research Center
1100 Fairview Ave. N, M1-B514
P.O. Box 19024
Seattle, WA 98109-1024
E-mail: hpa...@fredhutch.org
Phone: (206) 667-5791
Fax: (206) 667-1319
______________________________________________
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.