[R] strsplit and regex
Erik Iverson
iverson at biostat.wisc.edu
Thu Oct 16 00:23:11 CEST 2008
Matthew -
Redding, Matthew wrote:
> Hi All,
>
> Is there a means to extract the "10" from "23:10:34" in one pass using
> strsplit (or something else)?
> tst <- "23:10:34"
>
> For example my attempt
> strsplit(as.character(tst),"^[0-9]*:")
> gives
> [[1]]
> [1] "" "" "34"
Why not simply,
strsplit(tst, ":")
at which point you can subscript to what you want?
To apply to a length n vector
tst2 <- c("23:10:34", "12:08:04", "1:02:03")
strsplit(tst2, ":")
And to extract the second item of each element of the resulting list,
sapply(strsplit(tst2, ":"), "[", 2)
Does this help?
Erik
>
> Obviously it is matching the first two instances of [0-9]. Note that
> there may be only one digit before the first ":".
>
> How do I anchor the match to the begginning or better still, just
> extract the number I want in one pass?
>
> I can see that I can add "begin" to the beginning of the string, and
> match that and do something similar at the end, getting rid of empty
> strings
> etc - but I think it would take about 3 passess - and the files are
> large. And besides that code would be unlovely.
>
> Kind regards,
>
>
> Matt Redding
> ********************************DISCLAIMER**************...{{dropped:15}}
>
> ______________________________________________
> 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