Saltar al contenido

Ignorar caracteres de escape (barras invertidas) en cadenas R

Este grupo redactor ha pasado mucho tiempo investigando para dar solución a tus interrogantes, te compartimos la respuesta de modo que nuestro objetivo es serte de mucha ayuda.

Solución:

Puede intentar usar el argumento ‘allowEscapes’ en scan()

X=scan(what="character",allowEscapes=F)
C:Usersmhermanssomefile.csv

print(X)
[1] "C:\Users\mhermans\somefile.csv"

Primero debe asignarlo a un nombre:

pathname <- 'C:\Users\mhermans\somefile.csv'

Tenga en cuenta que para convertirlo en un vector de nombre, necesitaba duplicarlos a todos, lo que da una pista sobre cómo podría usar expresiones regulares. En realidad, si lo lee desde un archivo de texto, entonces R hará todo el doble por usted. no te preocupes De Verdad duplicando las barras invertidas. Se almacena como una sola barra invertida, pero se muestra así y debe ingresarse así desde la consola. De lo contrario, el intérprete de R intenta (ya menudo falla) convertirlo en un carácter especial. Y para agravar el problema, regex también usa la barra invertida como escape. Entonces, para detectar un escape con grep o sub o gsub, debe cuadruplicar las barras invertidas

 gsub("\\", "/", pathname)
# [1] "C:/Users/mhermans/somefile.csv"

Necesitabas duplicar "duplicar" las barras invertidas. El primero de cada par de 's es señalar a la máquina grep que lo que viene a continuación es un literal.

Considerar:

 nchar("\A")
#  returns `[1] 2`

A partir de la versión 4.0, presentado en abril de 2020, R proporciona una sintaxis para especificar cadenas sin procesar. los string en el ejemplo se puede escribir como:

path <- r"(C:Usersmhermanssomefile.csv)"

De ?Quotes:

Las constantes de caracteres sin procesar también están disponibles usando una sintaxis similar a la que se usa en C++: r"(...)" con ... cualquier secuencia de caracteres, excepto que no debe contener la secuencia de cierre )". Los pares de delimitadores [] y también se pueden usar, y R se puede usar en lugar de r. Para mayor flexibilidad, se pueden colocar varios guiones entre la comilla de apertura y el delimitador de apertura, siempre que aparezca el mismo número de guiones entre el delimitador de cierre y la comilla de cierre.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *