[R] replace a whole word with sub()

Marc Schwartz marc_schwartz at me.com
Fri Nov 13 16:21:43 CET 2009


On Nov 13, 2009, at 9:13 AM, Giulio Di Giovanni wrote:

>
>
>
> Dear all,
>
>
>
> I cannot figure out how to solve a small problem (well, not for me),  
> surely somebody can help me in few seconds.
>
>
>
> I have a series of strings in a vector X of the type  "xxx", "yyy",  
> "zzz", "IgA", "IgG", "kkk", "IgM", "aaa".
>
> I want to substitute every ENTIRE string beginning with "Ig" with "0".
>
> So, I'd like to have "xxx", "yyy", "zzz", "0", "0", "kkk", "0", "aaa".
>
>
>
> I can easily identify these strings with grep("^Ig", X), but if I  
> use this criterion in the sub() function (sub("^Ig", "0", X) I  
> obviously get "0A", "0G" etc.
>
>
>
> I didn't expect to do it in this way and I tried with metacharacters  
> and regexps in order to grep and substitute the whole word (\b \>,  
> $). I don't post here my tryings,  because they were obviously wrong.
>
> Please can you help me?


x <- c("xxx", "yyy", "zzz", "IgA", "IgG", "kkk", "IgM", "aaa")

 > sub("^Ig.*$", "0", x)
[1] "xxx" "yyy" "zzz" "0"   "0"   "kkk" "0"   "aaa"

You need to have the search regex include the entire element and not  
just the first couple of characters in order to replace the entire  
element.

HTH,

Marc Schwartz




More information about the R-help mailing list