[R] toupper does not work in sub + regex

Gabor Grothendieck ggrothendieck at gmail.com
Mon Apr 13 18:26:12 CEST 2009

sub only handles replacement strings, not replacement functions.
Your code is the same as:

sub("q_([a-z])[a-zA-Z]*", '\\1', "q_sviRaw")

since toupper('\\1') has no alphabetics so its just literally '\\1' and
the latter is what sub uses.

The gsubfn function in the gsubfn package can deal with replacement

> library(gsubfn)
> gsubfn("q_([a-z])[a-zA-Z]*", toupper, "q_sviRaw")
[1] "S"

See the home page: http;//gsubfn.googlecode.com, vignette and help page.

On Mon, Apr 13, 2009 at 11:54 AM, Tan, Richard <RTan at panagora.com> wrote:
> Hi, I don't know what I am doing wrong to the toupper does not seem
> working in sub + regex.  The following returns 's' not the upper class
> 'S' as I expect:
> sub("q_([a-z])[a-zA-Z]*",toupper('\\1'),"q_sviRaw")
> Can someone tell me where I did wrong?
> Thanks,
> Richard
>        [[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.

More information about the R-help mailing list