[R] Difficulty with "\\" in string functions....

Bernard McGarvey mcg@rvey@bern@rd @end|ng |rom comc@@t@net
Mon Feb 11 21:19:15 CET 2019


Brilliant! Thanks a million Ivan.

Lion Bernard McGarvey


Director, Fort Myers Beach Lions Foundation, Inc.


Retired (Lilly Engineering Fellow).


> On February 11, 2019 at 3:13 PM Ivan Krylov <krylov.r00t using gmail.com> wrote:
> 
> 
> On Mon, 11 Feb 2019 15:01:16 -0500 (EST)
> Bernard McGarvey <mcgarvey.bernard using comcast.net> wrote:
> 
> > Now I try to split it using
> > 
> > 
> > str_split(Fname1,"\\")
> > 
> > 
> > but this returns an error
> > 
> > 
> > Error in stri_split_regex(string, pattern, n = n, simplify =
> > simplify, : Unrecognized backslash escape sequence in pattern.
> > (U_REGEX_BAD_ESCAPE_SEQUENCE)
> 
> This happens because the second parameter of str_split is by default a
> regular expression, and a backslash has a special meaning in regular
> expressions: when preceding other characters, it may change the way
> they are interpreted. (For example, w means a literal "w"
> character, while \w means "any alphanumeric character". On the
> other hand, [ starts a character group, but \[ means just an opening
> square bracket.) See ?regex for more info on that.
> 
> Since you want a literal backslash, you need to escape it with another
> backslash: \\
> 
> But to write a string literal of a double-backslash in R, you need to
> escape both backslash characters, each with their own backslash: "\\\\"
> 
> ## fname <- "D:\\Data\\OneDrive\\ISTA Documents\\QT_App\\QT Analysis
> Input Data Example WorkBook.xlsx"
> ## message("\\\\")
> \\
> ## str_split(fname, "\\\\")
> [[1]]
> [1] "D:"                                         
> [2] "Data"                                       
> [3] "OneDrive"                                   
> [4] "ISTA Documents"                             
> [5] "QT_App"                                     
> [6] "QT AnalysisInput Data Example WorkBook.xlsx"
> 
> You can also avoid all layers of the backslash hell (except the first)
> if you choose to split by fixed strings instead of regular expressions
> by using stringr::fixed:
> 
> ## str_split(fname, fixed("\\"))
> 
> -- 
> Best regards,
> Ivan



More information about the R-help mailing list