[R] How to extract a specific substring from a string (regular expressions) ? See details inside
Gabor Grothendieck
ggrothendieck at gmail.com
Wed Sep 16 16:47:59 CEST 2009
Assuming the rule is an upper case alphabetic character followed by
two other characters followed by a string of digits then try this:
> library(gsubfn)
> strapply(x, "[A-Z][^ ][^ ][0-9]+")
[[1]]
[1] "YP_177963"
[[2]]
[1] "CAA15575"
[[3]]
[1] "CAA17111"
If you prefer the output as one long vector of strings try this:
> strapply(x, "[A-Z][^ ][^ ][0-9]+", simplify = c)
[1] "YP_177963" "CAA15575" "CAA17111"
If the string that denotes a protein can be part of a word which
itself does not denote a protein then we will need something like
this:
> strapply(x, "\\b[A-Z][^ ][^ ][0-9]+\\b", perl = TRUE)
[[1]]
[1] "YP_177963"
[[2]]
[1] "CAA15575"
[[3]]
[1] "CAA17111"
however, I would expect this second solution using perl's \b to be
much slower because the first one uses tcl code underneath whereas the
second uses R code.
See http://gsubfn.googlecode.com for more.
On Wed, Sep 16, 2009 at 9:53 AM, Giulio Di Giovanni
<perimessaggini at hotmail.com> wrote:
>
>
>
> Hi all,
>
> I have thousands of strings like these ones:
>
>
>
> "1159_1; YP_177963; PPE FAMILY PROTEIN"
>
> "1100_13; SECRETED L-ALANINE DEHYDROGENASE ALD CAA15575"
>
> "1141_24; gi;2894249;emb;CAA17111.1; PROBABLE ISOCITRATE DEHYDROGENASE"
>
>
>
> and various others..
>
>
>
> I'm interested to extract the code for the protein (in this example: YP_177963, CAA15575, CAA17111).
>
> I found only one common criterion to identify the protein codes in ALL my strings:
>
> I need a sequence of characters selected in this way:
>
>
>
> start:
>
> the first alphabetic capital letter followed after three characters by a digit
>
>
>
> end:
>
> the last following digit before a non-digit character, or nothing.
>
>
>
> Tricky, isn't it?
>
> Well, I'm not an expert, and I played a lot with regular expressions and sub() command with no big results. Also with substring.location in Hmisc package (but here I don't know how to use regular expressions).
>
> Maybe there are other more useful functions or maybe is just a matter to use regular expression in a better way...
>
>
>
> Can anybody help me?
>
>
>
> Thanks a lot in advance...
>
>
> _________________________________________________________________
> Racconta la tua estate, crea il tuo blog.
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> 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