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@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@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@gmail.com>
> > To: r-help <r-help@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@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.
>
>
>
> --
>
> 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
>

	[[alternative HTML version deleted]]

