On Mon, Apr 15, 2013 at 10:56 AM, Gabor Grothendieck <ggrothendi...@gmail.com> wrote: > On Mon, Apr 15, 2013 at 2:50 AM, Liviu Andronic <landronim...@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 ______________________________________________ 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.