[R] Splitting a character vector.

Jeff Newmiller jdnewmil at dcn.davis.CA.us
Sun Jul 8 00:12:16 CEST 2012


Just to clarify, the regex engine wants to see a \ before the ( if it is to treat it as an ordinary character. However, the source code interpreter also treats \ as an escape character. In order to get a \ into the string, you have to escape it. So it takes two \ characters in source code to obtain one \ character in memory where the regex code can "see" it.
---------------------------------------------------------------------------
Jeff Newmiller                        The     .....       .....  Go Live...
DCN:<jdnewmil at dcn.davis.ca.us>        Basics: ##.#.       ##.#.  Live Go...
                                      Live:   OO#.. Dead: OO#..  Playing
Research Engineer (Solar/Batteries            O.O#.       #.O#.  with
/Software/Embedded Controllers)               .OO#.       .OO#.  rocks...1k
--------------------------------------------------------------------------- 
Sent from my phone. Please excuse my brevity.

Rui Barradas <ruipbarradas at sapo.pt> wrote:

>Hello,
>
>Try the following.
>
>open.par <- " \\("  # with a blank before '('
>close.par <- "\\)"
>result <- strsplit(sub(close.par, "", dd1), open.par)
>
>
>Why the two '\\'? Because '(' is a meta-character so it must be
>escaped. 
>But '\' is a meta character so it must also be escaped.
>
>Then choose the right way to separate the two, maybe something like
>
>ix <- rep(c(TRUE, FALSE), length(result))
>unlist(result)[ix]
>unlist(result)[!ix]
>
>
>Hope this helps,
>
>Rui Barradas
>
>Em 07-07-2012 22:37, John Kane escreveu:
>> I am lousy at simple regex and I have not found a solution to a
>simple problem.
>>
>> I have a vector with some character values that I want to split.
>> Sample data
>> dd1  <-  c( "XXY (mat harry)","XXY (jim bob)", "CAMP (joe blow)",
>"ALP (max jack)")
>>
>> Desired result
>> dd2  <-  data.frame( xx = c("XXY", "XXY", "CAMP", "ALP"), yy = c("mat
>harry", "jim bob" , "joe blow", "max jack"))
>>
>> I thought I should be able to split the characters with strsplit but
>either I am misunderstanding the function or don't know how to escape a
>"(" properly in an effort to at least get   "XXY" "(mat harry)"
>>
>> Any pointers would be appreciated
>> Thanks
>> John Kane
>> Kingston ON Canada
>>
>> ____________________________________________________________
>> FREE 3D MARINE AQUARIUM SCREENSAVER - Watch dolphins, sharks & orcas
>on your desktop!
>>
>> ______________________________________________
>> 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.
>>
>
>______________________________________________
>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