[R] Quick GREP challenge

William Dunlap wdunlap at tibco.com
Thu Aug 26 18:50:21 CEST 2010



Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com  

> -----Original Message-----
> From: r-help-bounces at r-project.org 
> [mailto:r-help-bounces at r-project.org] On Behalf Of Dimitri Shvorob
> Sent: Thursday, August 26, 2010 3:16 AM
> To: r-help at r-project.org
> Subject: [R] Quick GREP challenge
> 
> 
> > grep("f[0-9]+=", "f1=5,f22=3,", value = T)
> [1] "f1=5,f22=3,"
> 
> How do I make the line output c("f1", "f22") instead? 
> (Actually, c(1,22)
> would be even better).

If you had S+ you could use subpattern and keep arguments
to strsplit (which otherwise acts like R's strsplit):

  > strings <- c("f1=5,f22=3,", "g4,f55,f66", "hello")
  > strsplit(strings, "f([[:digit:]]+)", subpattern=1, keep=TRUE)
  [[1]]:
  [1] "1"  "22"
  
  [[2]]:
  [1] "55" "66"

  [[3]]:
  character(0)

keep=TRUE means to split the string by what is not in
the pattern (keeping what is in the pattern) instead
of the usual splitting by what is in the pattern and
keeping what is not in the pattern.

subpattern=n means to match by the whole pattern but
to use only the n'th parenthesized subpattern when
deciding what to split by or keep.  In this case the
whole pattern matches 'f' followed by 1 or more digits
but we only want the keep the digits.  (subpattern=0,
the default, means to use the entire pattern.)

You still need to use as.integer() or as.numeric() on
the output elements.

Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com 
> 
> 
> Thank you.
> 
>  
> -- 
> View this message in context: 
> http://r.789695.n4.nabble.com/Quick-GREP-challenge-tp2339486p2
339486.html
> Sent from the R help mailing list archive at Nabble.com.
> 
> ______________________________________________
> 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