[R] How to apitalize leading letters & else of personal names?

Ben Bolker bbolker at gmail.com
Wed Dec 15 16:07:08 CET 2010

RockO <rock.ouimet <at> gmail.com> writes:

> Dear R world,
> Do you know about a function that would capitalize in the correct manner
> first and family names?
> I found in the cwhmisc only the CapLeading function, but it just does not do
> the job, taking care only to capitalize the first letter of a word.
> I am looking for a function that would recognize " |'|Mc|-" and capitalize
> the first letter following these characters.
> An example:
> names<-c("jean-francois st-john","helene o'donnel", "joe mcintyre")
> Desired result:
> >"Jean-Francois St-John" "Helene O'Donnel" "Joe McIntyre"

  This is pretty tricky.  gsub() can do some pretty slick things,
including replace with capitalized versions, so you could probably
write a gsub string to capitalize letters appearing at the beginning
of words OR after non-alphabetic characters.  (See the end of the
examples in ?gsub ...) 

"McIntyre" represents
a whole other class of difficulty.  Some Scots capitalize after "Mc",
others don't.  And what about all the rules about capitalization (or not)
after de/du/van/von?  What would you do with a Dutch name like "'t Hooft" ... ?

More information about the R-help mailing list