On February 11, 2019 at 3:13 PM Ivan Krylov <krylov.r00t at gmail.com> wrote:
On Mon, 11 Feb 2019 15:01:16 -0500 (EST)
Bernard McGarvey <mcgarvey.bernard at 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