[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