Dennis -
    Here's one way, using a somewhat obscure feature of perl
regular expressions, i.e. the \U and \L escape characters which
modify the case of the strings they appear in:

TEXT    <- c("aaaa", "bbb|cc", "|ddd")
sub('([a-z]*)(\\|?)([a-z]*)','\\U\\1\\2\\L\\3',TEXT,perl=TRUE)
[1] "AAAA"   "BBB|cc" "|ddd"

                                        - Phil Spector
                                         Statistical Computing Facility
                                         Department of Statistics
                                         UC Berkeley
                                         spec...@stat.berkeley.edu



On Thu, 26 May 2011, Dennis Fisher wrote:

Colleagues

Assume that I have a vector containing some text strings, some of which contain a particular 
character.  I could like to apply "toupper" to the text before the character.  For 
example (in this case, "|" is the particular character):

ORIGINAL:
        TEXT    <- c("aaaa", "bbb|cc", "|ddd")

AFTER APPLICATION OF toupper:
        TEXT    <- c("AAAA", "BBB|cc", "|dddd")

I could loop through each element, strsplit at the character, apply toupper to 
the first component, then paste each element together.  But, I hope that there 
is a simpler means to accomplish this.

Thanks in advance.

Dennis


Dennis Fisher MD
P < (The "P Less Than" Company)
Phone: 1-866-PLessThan (1-866-753-7784)
Fax: 1-866-PLessThan (1-866-753-7784)
www.PLessThan.com

______________________________________________
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.

Reply via email to