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.