[R] Re gular Expression help

Gabor Grothendieck ggrothendieck at gmail.com
Sat Nov 8 01:15:01 CET 2008


Here are a few more solutions.  x is the input vector
of character strings.

The first is a slightly shorter version of one of Wacek's.
The next three all create an anonymous grouping variable
(using sub, substr/gsub and strapply respectively)
whose components are "p" and "q" and then tapply
is used to separate out the corresponding components
of x according to the grouping:

sapply(c(p = "^[^pq]*p", q = "^[^pq]*q"), grep, x = x, value = TRUE)

tapply(x, sub("^[^pq]*(.).*", "\\1", x), c)

tapply(x, substr(gsub("[^pq]", "", x), 1, 1), c)

library(gsubfn)
tapply(x, strapply(x, "^[^pq]*(.)", simplify = c), c)

On Fri, Nov 7, 2008 at 1:09 PM, Rajasekaramya <ramya.victory at gmail.com> wrote:
>
> hi there
>
> I have a vector with a set of data.I just wanna seperate them based on the
> first p and q values metioned within the data.
>
> [1] chr10p15.3 /// chr3q29 /// chr4q35 /// chr9q34.3
> [2] chr1q22-q24
> [3] chr1q22-q24
> [4] chr1pter-q24
> [5] chr1pter-q24
> [6] chr1pter-q24
>
> i used a regular expression [+q*] to match up the values but it matches q
> found anywhere i know i have written like that but i jus want it to match
> the first p or q values.
>
> my result should be for q and
> [2] chr1q22-q24
> [3] chr1q22-q24
>
> for p
> [1] chr10p15.3 /// chr3q29 /// chr4q35 /// chr9q34.3
> [4] chr1pter-q24
> [5] chr1pter-q24
> [6] chr1pter-q24
>
>
>
> --
> View this message in context: http://www.nabble.com/Regular-Expression-help-tp20385971p20385971.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