Working with string
Christopher: Yes, I warned you about both cases: In your second example there is no match since there is no nonupper case version of the all upper case entries. As you did not specify what should be done in that case, I leave it to you to figure out the necessary modifications of my code. Possible Hint: ?is.na -- Bert On Sun, Aug 11, 2013 at 10:54 AM, Christofer Bogaso
<bogaso.christofer at gmail.com> wrote:
Thanks Bert and Arun for your help. As Bert already pointed out, Arun's code is working well, however except this:
CH <- c("MRTZIt", "MRTZIT", "PPBZJG", "ppbzJG")
chnew<-CH
chnew[duplicated(toupper(CH))]<-CH[duplicated(toupper(CH),fromLast=TRUE)]
CH
[1] "MRTZIt" "MRTZIT" "PPBZJG" "ppbzJG"
chnew
[1] "MRTZIt" "MRTZIt" "PPBZJG" "PPBZJG" However Bert's code is also working very well, except following scenario:
CH <- c("MRTZIt", "MRTZIT", "PPBZJG", "PPBZJG")
caps <- CH %in% toupper(CH)
noncaps <- CH[!caps]
chnew <- CH
chnew[caps] <- noncaps[match(CH[caps], toupper(noncaps))]
CH
[1] "MRTZIt" "MRTZIT" "PPBZJG" "PPBZJG"
chnew
[1] "MRTZIt" "MRTZIt" NA NA In my case, both can be well possibilities. Any better pointer? Thanks and regards, On Sun, Aug 11, 2013 at 9:42 PM, Bert Gunter <gunter.berton at gene.com> wrote:
Well, maybe: it assumes that the uppercase string version always occurs after the nonuppercase version. That's why I rejected it. However, it points out something important: details matter. The more one knows about the nature of the problem, the better the solution one can tailor -- a remark for which the response should be, "well duhhh!" But posters frequently seem to disregard this. -- Bert On Sun, Aug 11, 2013 at 8:43 AM, arun <smartpink111 at yahoo.com> wrote:
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. ______________________________________________ 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
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