[R] Working with string
arun
smartpink111 at yahoo.com
Sun Aug 11 20:06:26 CEST 2013
Hi Christofer,
I didn't test this extensively. Looks like this works for the example you showed.
CH1<-sort(CH,decreasing=TRUE)
chnew<-CH1
chnew[duplicated(toupper(CH1))]<- CH1[duplicated(toupper(CH1),fromLast=TRUE)]
sort(chnew)
#[1] "MRTZIt" "MRTZIt" "ppbzJG" "ppbzJG"
A.K.
________________________________
From: Christofer Bogaso <bogaso.christofer at gmail.com>
To: Bert Gunter <gunter.berton at gene.com>
Cc: arun <smartpink111 at yahoo.com>; R help <r-help at r-project.org>
Sent: Sunday, August 11, 2013 1:54 PM
Subject: Re: [R] Working with string
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
>
More information about the R-help
mailing list