Hello again,
Let say I have a lengthy character vector like:
CH <- c("aBd", "sTb", "ABD",
"dFDasd", "asd", "DFDASD")
Now I want to create a vector like:
CH_New <- c("aBd", "sTb", "aBd",
"dFDasd", "asd", "dFDasd") ## the 3rd and
6th element replaced
Basically, the goal is:
If an element has all upper case then it will find another element with all
lower case or mix of upper/lower case. Then the all-upper-case element will
be replaced by that mix. If there is multiple match then chose the first
one.
Can somebody give me any pointer how can I achieve that?
Thanks and regards,
[[alternative HTML version deleted]]
Christofer: You may have to fortify the following a bit to allow for the possibility that some of your caps strings don't match. But other than that, I think this will do:> CH <- c("aBd", "sTb", "ABD", "dFDasd", "asd", "DFDASD") > caps <- CH %in% z > noncaps <- CH[!caps] > chnew <- CH > chnew[caps] <- noncaps[match(CH[caps], toupper(noncaps))] > CH[1] "aBd" "sTb" "ABD" "dFDasd" "asd" [6] "DFDASD"> chnew[1] "aBd" "sTb" "aBd" "dFDasd" "asd" [6] "dFDasd" Cheers, Bert On Sun, Aug 11, 2013 at 5:39 AM, Christofer Bogaso <bogaso.christofer at gmail.com> wrote:> Hello again, > > Let say I have a lengthy character vector like: > > CH <- c("aBd", "sTb", "ABD", "dFDasd", "asd", "DFDASD") > > Now I want to create a vector like: > > CH_New <- c("aBd", "sTb", "aBd", "dFDasd", "asd", "dFDasd") ## the 3rd and > 6th element replaced > > Basically, the goal is: > > If an element has all upper case then it will find another element with all > lower case or mix of upper/lower case. Then the all-upper-case element will > be replaced by that mix. If there is multiple match then chose the first > one. > > > Can somebody give me any pointer how can I achieve that? > > Thanks and regards, > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at 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.-- Bert Gunter Genentech Nonclinical Biostatistics Internal Contact Info: Phone: 467-7374 Website: http://pharmadevelopment.roche.com/index/pdb/pdb-functional-groups/pdb-biostatistics/pdb-ncb-home.htm
Hi,
May be this helps:
chnew<-CH
?chnew[duplicated(toupper(CH))]<-CH[duplicated(toupper(CH),fromLast=TRUE)]
?chnew
#[1] "aBd"??? "sTb"??? "aBd"??? "dFDasd"
"asd"??? "dFDasd"
A.K.
----- Original Message -----
From: Christofer Bogaso <bogaso.christofer at gmail.com>
To: r-help <r-help at r-project.org>
Cc:
Sent: Sunday, August 11, 2013 8:39 AM
Subject: [R] Working with string
Hello again,
Let say I have a lengthy character vector like:
CH <- c("aBd", "sTb", "ABD",
"dFDasd", "asd", "DFDASD")
Now I want to create a vector like:
CH_New <- c("aBd", "sTb", "aBd",
"dFDasd", "asd", "dFDasd")? ## the 3rd and
6th element replaced
Basically, the goal is:
If an element has all upper case then it will find another element with all
lower case or mix of upper/lower case. Then the all-upper-case element will
be replaced by that mix. If there is multiple match then chose the first
one.
Can somebody give me any pointer how can I achieve that?
Thanks and regards,
??? [[alternative HTML version deleted]]
______________________________________________
R-help at 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.