Ignorieren Escape-Zeichen (Backslash) in R-Strings
Frage
Während eine R-Plugin in SPSS ausgeführt wird, erhalte ich einen Windows-Pfad-String als Eingabe z.
'C:\Users\mhermans\somefile.csv'
Ich mag diesen Weg in der nachfolgenden R-Code verwenden, aber dann müssen die Schrägstriche mit Schrägstrichen ersetzt werden, sonst R interpretiert es als Fluchten (z. B. „\ U ohne Hex-Ziffern verwendet“ Fehler).
Ich habe jedoch nicht in der Lage gewesen, eine Funktion zu finden, die die Schrägstriche mit foward Schrägstrichen oder doppeltem Escape sie ersetzen können. Alle diese Funktionen übernehmen diese Zeichen entgangen sind.
Also, gibt es etwas entlang der Linien von:
>gsub('\\', '/', 'C:\Users\mhermans')
C:/Users/mhermans
Lösung
Sie können versuchen, das Argument des allowEscapes 'zu verwenden, in Scan ()
X=scan(what="character",allowEscapes=F)
C:\Users\mhermans\somefile.csv
print(X)
[1] "C:\\Users\\mhermans\\somefile.csv"
Andere Tipps
Zuerst müssen Sie es auf einen Namen zugewiesen zu bekommen:
pathname <- 'C:\\Users\\mhermans\\somefile.csv'
Beachten Sie, dass, um es in einen Namen Vektor zu bekommen Sie benötigt, um sie alle zu verdoppeln, was einen Hinweis gibt, wie Sie Regex nutzen könnten. Eigentlich, wenn Sie es in einer Textdatei lesen, dann wird R alles für Sie die Verdoppelung tun. Wohlgemerkt es nicht wirklich Verdoppelung der Schrägstriche. Es wird als ein einzelner Schrägstrich gespeichert, aber es ist so und Bedürfnisse angezeigt wird, dass sein Eingang wie von der Konsole. Andernfalls wird das R-Interpreter versucht (und oft nicht) es in ein Sonderzeichen zu machen. Und das Problem zu verschlimmern, regex verwendet den umgekehrten Schrägstrich als Escape-als auch. So eine Flucht mit grep oder Unter erkennen oder gsub müssen Sie die Schrägstriche vervierfachen
gsub("\\\\", "/", pathname)
# [1] "C:/Users/mhermans/somefile.csv"
Sie mussten doppelt „double“ den umgekehrten Schrägstrichen. Die erste jedes Paar von \ 's ist zum grep Maschine zu signalisieren, dass das, was als nächstes kommt eine wörtliche ist.
Bedenken Sie:
nchar("\\A")
# returns `[1] 2`
Wenn die Datei E: \ Data \ junk.txt enthält den folgenden Text (ohne Anführungszeichen): C: \ Users \ mhermans \ somefile.csv
Sie können eine Warnung mit der folgenden Aussage bekommen, aber es wird funktionieren:
texinp <- readLines("E:\\Data\\junk.txt")
Wenn die Datei E: \ Data \ junk.txt enthält den folgenden Text (mit Anführungszeichen): "C: \ Users \ mhermans \ somefile.csv"
Die obige Aussage readlines könnte auch Sie eine Warnung, aber jetzt enthalten:
"\" C: \ Users \ mhermans \ somefile.csv \ ""
Also, zu bekommen, was Sie wollen, stellen Sie sicher, dass es keine Anführungszeichen in der eingehenden Datei und Verwendung:
texinp <- suppressWarnings(readLines("E:\\Data\\junk.txt"))