[R] splitting a string by space except when contained within quotes

Gabor Grothendieck ggrothendieck at gmail.com
Thu Nov 29 17:06:41 CET 2012


On Thu, Nov 29, 2012 at 9:43 AM, downtowater <downtowater at yahoo.ca> wrote:
> I've been trying to split a space delimited string with double-quotes in R
> for some time but without success. An example of a string is as follows:
>
> /rainfall snowfall "Channel storage" "Rivulet storage"/
>
> It's important for us because these are column headings that must match the
> subsequent data.
>
> Here is some code I've been trying:
>
> str <- 'rainfall snowfall "Channel storage" "Rivulet storage"'
> regex <- "[^\\s\"']+|\"([^\"]*)\""
> split <- strsplit(str, regex, perl=T)
> what I would like is
>
> [1] "rainfall" "snowfall" "Channel storage" "Rivulet storage"
>
> but what I get is:
>
> [1] ""  " " " " " "
>
> The vector is the right length (which is encouraging) but of course the
> strings are empty or contain a single space. Any suggestions?

Try this:

> scan(con <- textConnection(str), what = "")
Read 4 items
[1] "rainfall"        "snowfall"        "Channel storage" "Rivulet storage"
> close(con)



email: ggrothendieck at gmail.com




More information about the R-help mailing list