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
War es hilfreich?

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"))
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top