[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