Re: [R] regular expressions with grep() and negative indexing Peter Dalgaard wrote:> Stephen Tucker wrote:>   >> Dear R-helpers,>>>> Does anyone know how to use regular expressions to return vector elements>> that don't contain a word? For instance, if I have a vector>>   x <- c("seal.0","seal.1-exclude")>> I'd like to get back the elements which do not contain the word "exclude",>> using something like (I know this doesn't work) but:>>   grep("[^(exclude)]",x)>>>> I can use >>   x[-grep("exclude",x)]>> for this case but then if I use this expression in a recursive function, it>> will not work for instances in which the vector contains no elements with>> that word. For instance, if I have>>   x2 <- c("dolphin.0","dolphin.1")>> then>>   x2[-grep("exclude",x2)]>> will give me 'character(0)'>>>> I know I can accomplish this in several steps, for instance:>>   myfunc <- function(x) {>>     iexclude <- grep("exclude",x)>>     if(length(iexclude) > 0) x2 <- x[-iexclude] else x2 <- x>>     # do stuff with x2 <...?>>   }>>>> But this is embedded in a much larger function and I am trying to minimize>> intermediate variable assignment (perhaps a futile effort). But if anyone>> knows of an easy solution, I'd appreciate a tip.>>   >>     > It has come up a couple of times before, and yes, it is a bit of a pain.>> Probably the quickest way out is>> negIndex <- function(i) >>    if(length(i))>>        -i >>    else >>        TRUE>>   ... which of course needs braces if typed on the command line negIndex <- function(i) {   if(length(i))       -i    else        TRUE} And I should probably also have said that it works like this: > x2 <- c("dolphin.0","dolphin.1")> x2[-grep("exclude",x2)]character(0)> x2[negIndex(grep("exclude",x2))][1] "dolphin.0" "dolphin.1" --    O__  ---- Peter Dalgaard             Ãster Farimagsgade 5, Entr.B  c/ /'_ --- Dept. of Biostatistics     PO Box 2099, 1014 Cph. K (*) \\(*) -- University of Copenhagen   Denmark          Ph:  (+45) 35327918~~~~~~~~~~ - (p.dalgaard@biostat.ku.dk)                  FAX: (+45) 35327907 ______________________________________________R-help@stat.math.ethz.ch mailing listhttps://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.