[Rd] extending strsplit(): supply pattern to keep, not to split by

Gabor Grothendieck ggrothendieck at gmail.com
Tue Apr 4 18:01:42 CEST 2006


gsubfn in package gsubfn can do this.  See the examples
in ?gsubfn


On 4/4/06, Bill Dunlap <bill at insightful.com> wrote:
> strsplit() is a convenient way to get a
> list of items from a string when you
> have a regular expression for what is not
> an item.  E.g.,
>
>   > strsplit("1.2, 34, 1.7e-2", split="[ ,] *")
>   [[1]]:
>   [1] "1.2"    "34"     "1.7e-2"
>
> However, sometimes is it more convenient to
> give a pattern for the items you do want.
> E.g., suppose you want to pull all the numbers
> out of a string which contains a mix of numbers
> and words.  Making a pattern for what a
> number is simpler than making a pattern
> for what may come between the number.
>   > number.pattern <- "[-+]?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))([eE][+-]?[0-9]+)?"
>
> I propose adding a keep=FALSE argument to
> strsplit() to do this.  If keep is FALSE,
> then the split argument matches the stuff to
> omit from the output; if keep is TRUE then
> split matches the stuff to put into the
> output.  Then we could do the following to
> get a list of all the numbers in a string
> (done in a version of strsplit() I'm working on
> for S-PLUS):
>
>   > strsplit("1.2, 34, 1.7e-2", split=number.pattern,keep=TRUE)
>   [[1]]:
>   [1] "1.2"    "34"     "1.7e-2"
>
>   > strsplit("Ibuprofin 200mg", split=number.pattern,keep=TRUE)
>   [[1]]:
>   [1] "200"
>
> Is this a reasonable thing to want strsplit to do?
> Is this a reasonable parameterization of it?
>
> ----------------------------------------------------------------------------
> Bill Dunlap
> Insightful Corporation
> bill at insightful dot com
> 360-428-8146
>
>  "All statements in this message represent the opinions of the author and do
>  not necessarily reflect Insightful Corporation policy or position."
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>



More information about the R-devel mailing list