Darn, Good catch, I fell victim to overthinking the problem. I think I was more thinking of: '[0-9]+(?=/)'
Which uses the whole match (then I switched thinking and captured the number, but did not simplify the other part). Yours is the best. -- Gregory (Greg) L. Snow Ph.D. Statistical Data Center Intermountain Healthcare greg.s...@imail.org 801.408.8111 > -----Original Message----- > From: Gabor Grothendieck [mailto:ggrothendi...@gmail.com] > Sent: Friday, February 04, 2011 12:22 PM > To: Greg Snow > Cc: Dick Harray; r-help@r-project.org > Subject: Re: [R] lapply, strsplit, and list elements > > On Fri, Feb 4, 2011 at 1:27 PM, Greg Snow <greg.s...@imail.org> wrote: > > Try this: > > > >> x <- c("349/077,349/074,349/100,349/117", > > + "340/384.2,340/513,367/139,455/128,D13/168", > > + "600/437,128/903,128/904") > >> > >> library(gsubfn) > >> out <- strapply(x, '([0-9]+)(?=/)') > >> out > > [[1]] > > [1] "349" "349" "349" "349" > > > > [[2]] > > [1] "340" "340" "367" "455" "13" > > > > [[3]] > > [1] "600" "128" "128" > > > > > > The strapply looks for the pattern then returns every time it finds > the pattern. The pattern in this case is 1 or more digits that are > followed by a /, but the slash is not included in the matched portion > (a positive look ahead). > > > > If you need more than digits you can modify the pattern to whatever > matches before the /. > > Also this similar approach with a slight simplification of the regular > expression: > > strapply(x, '([0-9]+)/') > > or to convert the numbers to numeric at the same time: > > strapply(x, '([0-9]+)/', as.numeric) > > > -- > Statistics & Software Consulting > GKX Group, GKX Associates Inc. > tel: 1-877-GKX-GROUP > email: ggrothendieck at gmail.com ______________________________________________ R-help@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.