[R] how to transform string to "Camel Case"?
Gabor Grothendieck
ggrothendieck at gmail.com
Mon Apr 15 17:09:39 CEST 2013
On Mon, Apr 15, 2013 at 10:56 AM, Gabor Grothendieck
<ggrothendieck at gmail.com> wrote:
> On Mon, Apr 15, 2013 at 2:50 AM, Liviu Andronic <landronimirc at gmail.com> wrote:
>> Dear all,
>> Given the following vector:
>>> (z <- c('R project', 'hello world', 'something Else'))
>> [1] "R project" "hello world" "something Else"
>>
>> I know how to obtain all capitals or all lower case letters:
>>> tolower(z)
>> [1] "r project" "hello world" "something else"
>>> toupper(z)
>> [1] "R PROJECT" "HELLO WORLD" "SOMETHING ELSE"
>>
>> I saw the tocamel() function in 'rapport', but it doesn't do what I
>> want to achieve as it actually proceeds to camelCase/CamelCase the
>> strings:
>>> tocamel(z)
>> [1] "RProject" "helloWorld" "somethingElse"
>>
>>
>> But how should I proceed to obtain Camel Case? Here's what I'd like to get:
>> c('R Project', 'Hello World', 'Something Else')
>>
>
> Here is a one liner using gsubfn from the gsubfn package
> (http://gsubfn.googlecode.com). gsubfn is like gsubfn except the
> second argument can be a function (or a list or a proto object). The
> regular expression here matches a space followed by any character.
> For each such match gsubfn will call the function denoted by the
> second argument using the two parenthesized portions of the regular
> expression as the two arguments. It supports an optional formula
> notation to express the function for compactness so ... ~ toupper(..2)
> denotes function(...) toupper(..2) which is equivalent to function(x,
> y) toupper(y) . It replaces the input with the output of that
> function. Finally we check if any of the components of the input are
> NA and replace those with NA in the output:
>
>> replace(gsubfn("( )(.)", ... ~ toupper(..2), z), is.na(z), NA)
> [1] "RProject" "helloWorld" "somethingElse" NA
Above "gsubfn is like gsubfn" should read "gsubfn is like gsub"
Also here is a further simplification:
> replace(gsubfn(" (.)", toupper, z), is.na(z), NA)
[1] "RProject" "helloWorld" "somethingElse" NA
--
Statistics & Software Consulting
GKX Group, GKX Associates Inc.
tel: 1-877-GKX-GROUP
email: ggrothendieck at gmail.com
More information about the R-help
mailing list