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.

Reply via email to