On Mon, 11 Feb 2019 15:01:16 -0500 (EST)
Bernard McGarvey <mcgarvey.bern...@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

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.

Reply via email to