2012-09-29 9 views
8

Estoy tratando de tomar dos vectores de caracteres:con pasta() para construir ruta ventanas en I

directory <- "specdata" 
id <- 1 

y leer los datos desde el archivo que lo harían "punto" a: es decir:

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

El problema está en el resultado de pegar y la "\". Estoy tratando de que devuelva "specdata\1.csv" sin embargo, devuelve "specdata\\1.csv" que no es lo mismo.

en vano, también he intentado:

  • utilizando una sola barra "\"
  • usando comillas simples como '\\'
  • usando comillas simples como '\'
  • cambiar sep = '\'
  • cambiando sep = '\\'
  • cambiando sep = "\"
  • cambiar sep = "\\"
  • utilizando la función c() primero como

código:

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

Te perdiste el obvio '/' que R permite, y quieres unir derstand sobre escape slashed - por lo que '\\' realmente necesita '\\\\'. Dicho esto, 'file.path()' es * el * camino a seguir ya que @sgibb te mostró. –

Respuesta

18

Debe utilizar file.path lugar (que es independiente de su plataforma):

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

file.path es lo que estaba buscando, pero ahora, en términos más generales, ¿cómo podría uno concatenar las tres cadenas "hi" "\" y "mom"? ¿File.path es la única forma de poner una barra entre cadenas? –

+2

Tenga en cuenta que 'nchar (" \\ ")' sigue siendo 1, por lo que aunque se ve diferente, en realidad sigue siendo una barra oblicua. – James

+0

Gracias, actualicé mi pregunta para poner los ejemplos en los códigos divs para demostrar que entiendo eso ... todavía existe la pregunta de por qué pegar no funciona como lo espero –