[R] simultaneous actions of grep ???

Marc Schwartz marc_schwartz at comcast.net
Mon Jun 25 19:06:23 CEST 2007


On Mon, 2007-06-25 at 11:58 -0500, Marc Schwartz wrote:
> On Mon, 2007-06-25 at 17:15 +0100, Ana Patricia Martins wrote:
> > Hello R-users and developers,
> > 
> > Once again, I'm asking for your help.
> > 
> > There is other way to do the same more easily for applied simultaneous
> > grep???
> >   
> >     c<-subset(c,!rownames(c) %in% grep(".1",rownames(c),value=T))
> >     c<-subset(c,!rownames(c) %in% grep(".5",rownames(c),value=T))
> >     c<-subset(c,!rownames(c) %in% grep(".6",rownames(c),value=T))
> >     c<-subset(c,!rownames(c) %in% grep(".99999",rownames(c),value=T))
> > 
> > Thanks in advance for helping me.
> 
> One question might be what other possible values can the rownames take.
> 
> For example, if you want to check for '.99999', but not for other values
> containing a '9' after the decimal, something like the following should
> work:
> 
> sub.c <- subset(c, 
>                 !rownames(c) %in% 
>                 grep("\\.([156])|([9]{5})", rownames(c), 
>                      value = TRUE))
> 
> Otherwise, if you want to include anything with a '9' after a decimal,
> the following would work:
> 
> sub.c <- subset(c, 
>                 !rownames(c) %in% 
>                 grep("\\.[1569]", rownames(c), value = TRUE))
> 
> 
> See ?regex and the information there for some additional guidance. There
> are also many regex references online, such as:
> 
>   http://www.regular-expressions.info/
> 
> BTW, it would be preferable not to use 'c' to name an object in R, since
> c() is a function. While conflicts should, in general, not occur, it
> eliminates such risk and makes for more easily readable code to not use
> function names for objects.

Quick possible correction:

I mis-read the regex as containing a decimal, which would need to be
escaped as I had. 

If your use of the '.' is to refer to any character, then the following
would be correct:

sub.c <- subset(c, 
                !rownames(c) %in% 
                grep(".([156])|([9]{5})", rownames(c), 
                     value = TRUE))

or

sub.c <- subset(c, 
                !rownames(c) %in% 
                grep(".[1569]", rownames(c), value = TRUE))


Sorry for the confusion.

Marc



More information about the R-help mailing list