2012-09-29 3 views
8

Ich versuche, zwei Zeichenvektoren zu konstruieren, zu nehmen:mit Paste() Windows-Pfad in R

directory <- "specdata" 
id <- 1 

und lesen die Daten in der Datei, sie würden „Punkt“ zu: das heißt:

data <- read.table(paste(directory,"\\",id,".csv", sep="") 

Das Problem ist in dem Ergebnis der Paste und der "\". Ich versuche, es zurück zu bekommen "specdata\1.csv" aber es gibt "specdata\\1.csv" zurück, die nicht das gleiche ist.

Ohne Erfolg habe ich auch versucht:

  • einen Einzelstrich mit "\"
  • Apostrophe wie '\\'
  • mit einfachen Anführungszeichen wie '\'
  • Wechsel September mit = '\'
  • wechselnde sep = '\\'
  • wechselnde sep = "\"
  • Wechsel sep = "\\"
  • die c() -Funktion zunächst wie

Code:

fileNameAndPath <- c(directory,"\",id,".csv") 
data <- read.table(fileNameAndPath) 
+0

Sie haben das offensichtliche '/' was R erlaubt, und Sie wollen un über entkommen entkommen - so '' 'wirklich braucht' \\ ''. Das heißt, 'file.path()' ist * der * Weg zu gehen, wie @sgibb es dir gezeigt hat. –

Antwort

18

Sie file.path stattdessen verwenden sollten (es ist unabhängig von Ihrer Plattform):

file.path(directory, paste(id, ".csv", sep="")) 
+0

file.path ist, was ich suchte, aber jetzt allgemeiner, wie würde ein anderer die drei Saiten "hi" "\" und "mom" verketten? Ist file.path die einzige Möglichkeit, einen Schrägstrich zwischen Strings zu setzen? –

+2

Beachten Sie, dass 'nchar (" \\ ")' immer noch 1 ist. Obwohl es anders aussieht, ist es immer noch ein einzelner Schrägstrich. – James

+0

Danke, ich habe meine Frage aktualisiert, um die Beispiele in Code divs zu zeigen, dass ich verstehe, dass ... noch immer die Frage existiert, warum Paste nicht funktioniert, wie ich es erwarte –