without used the starting open example error cannot r filepath backslash path-separator

used - Problemas con la ruta del archivo en R usando Windows(error "Dígitos hexadecimales en la cadena de caracteres")



error in file(file, "rt"):cannot open the connection (8)

Ejecuto R en Windows y tengo un archivo csv en el escritorio. Lo cargo de la siguiente manera,

x<-read.csv("C:/Users/surfcat/Desktop/2006_dissimilarity.csv",header=TRUE)

pero la R da el siguiente mensaje de error

Error: ''/ U'' se usa sin dígitos hexadecimales en la cadena de caracteres que comienza con "C: / U"

Entonces, ¿cuál es la forma correcta de cargar este archivo. Estoy usando vista


Creo que R está leyendo el ''/' en la cadena como un carácter de escape. Por ejemplo, / n crea una nueva línea dentro de una cadena, / t crea una nueva pestaña dentro de la cadena.

''/' funcionará porque R reconocerá esto como una barra invertida normal.


La mejor manera de lidiar con esto en el caso de un archivo txt que contenga datos para la minería de texto (voz, boletín informativo, etc.) es reemplazar "/" con "/".

Ejemplo:

file<-Corpus(DirSource("C:/Users/PRATEEK/Desktop/training tool/Text Analytics/text_file_main"))


Por favor, no marque esta respuesta como correcta ya que smitec ya respondió correctamente. Incluyo una función de conveniencia que guardo en mi biblioteca .First que convierte la ruta de Windows al formato que funciona en R (los métodos descritos por Sacha Epskamp). Simplemente copie la ruta al portapapeles (ctrl + c) y luego ejecute la función como pathPrep() . No hay necesidad de una discusión. La ruta se imprime en su consola correctamente y se escribe en su portapapeles para pegarla fácilmente en un script. Espero que esto sea de ayuda.

pathPrep <- function(path = "clipboard") { y <- if (path == "clipboard") { readClipboard() } else { cat("Please enter the path:/n/n") readline() } x <- chartr("//", "/", y) writeClipboard(x) return(x) }


Reemplace las barras inclinadas / con barras diagonales / al ejecutar Windows Machine


Reemplace todos los / con // .

está intentando escapar del siguiente carácter en este caso, la U para insertar un / necesita insertar un escape / que es //


Una forma sencilla es usar python. en tipo terminal de python

r "C: / Users / surfcat / Desktop / 2006_dissimilarity.csv" y volverá a ''C: / Users / surfcat / Desktop / 2006_dissimilarity.csv''


Mi solución es definir un fragmento de RStudio de la siguiente manera:

snippet pp "`r gsub("////", "////////////////", readClipboard())`"

Este fragmento convierte las barras diagonales inversas en barras diagonales dobles // . La siguiente versión funcionará si prefieres convertir backslahes a barras diagonales / .

snippet pp "`r gsub("////", "/", readClipboard())`"

Una vez que se haya definido su fragmento de código preferido, pegue una ruta desde el portapapeles escribiendo p - p - TAB - ENTER (que es pp y luego la tecla de tabulación y luego ingrese) y la ruta se insertará mágicamente con delimitadores amigables con R.


Solución

Pruebe esto: x <- read.csv("C:/Users/surfcat/Desktop/2006_dissimilarity.csv", header=TRUE)

Explicación

R no puede entender las rutas normales de Windows correctamente porque "/" tiene un significado especial; se usa como carácter de escape para dar a los siguientes caracteres un significado especial ( /n para nueva línea, /t para tab, /r para retorno de carro, ... ., eche un vistazo aquí ).

Porque R no conoce la secuencia /U se queja. Simplemente reemplace el "/" con "/" o use un "/" adicional para escapar del "/" de su significado especial y todo funciona sin problemas.

Alternativa

En Windows, creo que lo mejor que puede hacer para mejorar su flujo de trabajo con rutas específicas de Windows en R es usar, por ejemplo, AutoHotkey, que permite teclas de acceso rápido personalizadas:

  • definir una tecla de acceso directo, por ejemplo, Cntr - Shift - V
  • le asigna un procedimiento que reemplaza las barras invertidas dentro de su Portapapeles con "slaches" ...
  • cuando quiera copiar una ruta en R puede usar Cntr - Shift - V en lugar de Cntr - V
  • Et-voila

Fragmento de código de AutoHotkey (enlace a la página de inicio)

^+v:: StringReplace, clipboard, clipboard, /, /, All SendInput, %clipboard%