[R] simultaneous actions of grep ???

Prof Brian Ripley ripley at stats.ox.ac.uk
Tue Jun 26 10:36:06 CEST 2007


On Mon, 25 Jun 2007, Stephen Tucker wrote:

> My mistake... last alternative should be:
>
>   c<-subset(c,regexpr("\\.1|\\.5|\\.6|\\.99999",rownames(c)) < 0)

Or, more readably,

c <- subset(c, regexpr("\\.(1|5|6|99999)", rownames(c)) < 0)


>
> --- Stephen Tucker <brown_emu at yahoo.com> wrote:
>
>> You can list them together using "|" (which stands for 'or'):
>>
>>   c<-subset(c,!rownames(c) %in%
>> grep(".1|.5|.6|.99999",rownames(c),value=T))
>>
>> but "." means any character for regular expressions, so if you meant a
>> decimal place, you probably want to escape them with a "\\":
>>
>>   c<-subset(c,!rownames(c) %in%
>>             grep("\\.1|\\.5|\\.6|\\.99999", rownames(c),value=T))
>>
>> Another option is
>>
>>   c<-subset(c,regexpr("\\.1|\\.5|\\.6|\\.99999",c) < 0)
>>
>> because regexpr will return -1 for elements which do not contain a match.
>>
>>
>> --- Ana Patricia Martins <ana.pmartins at ine.pt> 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))

-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595



More information about the R-help mailing list