You can also avoid the issue by using the basename and dirname functions. > Fname1 <- "D:\\Data\\OneDrive\\ISTA Documents\\QT_App\\QT Analysis Input Data Example WorkBook.xlsx" > basename(Fname1) [1] "QT Analysis Input Data Example WorkBook.xlsx" > dirname(Fname1) [1] "D:/Data/OneDrive/ISTA Documents/QT_App"
Use normalizePath if you need to convert those / to \ on Windows. Bill Dunlap TIBCO Software wdunlap tibco.com On Mon, Feb 11, 2019 at 12:26 PM Bernard McGarvey < mcgarvey.bern...@comcast.net> wrote: > 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.r...@gmail.com> > wrote: > > > > > > 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. > [[alternative HTML version deleted]] ______________________________________________ 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.