ventajas special retenes mtb invertida horquilla escape cambiar r file-io escaping backslash

special - Cómo escapar de las barras invertidas en la cadena R



python escape string (3)

Estoy escribiendo cadenas en un archivo usando R:

> x1="//str" > x2="///str" Error: ''/s'' is an unrecognized escape in character string starting "///s" > x2="////str" > write(file=''test'',c(x1,x2))

Cuando abro el archivo llamado test , veo esto:

/str //str

Si quiero obtener una cadena que contenga 5 barras diagonales inversas, ¿debería escribir 10 barras diagonales inversas, como esta?

x="//////////str"


[...] Si quiero obtener una cadena que contenga 5 / , debería escribir 10 / [...]

Si deberías. Para escribir una sola / en una cadena, la escribe como "//" .

Esto se debe a que / es un carácter especial, reservado para escapar del personaje que lo sigue. (Quizás reconozcas /n como nueva línea.) También es útil si quieres escribir una cadena que contenga un solo " . Lo escribes como "/"" .

El motivo por el que ///str no es válido es porque se interpreta como // (que corresponde a un único / ) seguido de /s , que no es válido, ya que " s escapado" no tiene significado.


Lea esta sección sobre vectores de caracteres.

En esencia, dice que cuando ingresas los literales de las cadenas de caracteres los encierras en un par de comillas ("o"). Dentro de esas comillas, puedes crear caracteres especiales usando / como un carácter de escape.

Por ejemplo, / n denota nueva línea o / "se puede usar para ingresar a" sin que R piense que es el final de la cadena. Como / es un personaje de escape, necesita una forma de ingresar un real. Esto se hace usando //. Escapar de la escapada!


Tenga en cuenta que la duplicación de las barras diagonales inversas se debe a que está ingresando la cadena en la línea de comando y la secuencia es analizada primero por el analizador R. Puede ingresar cadenas de diferentes maneras, algunas de las cuales no necesitan el doblez. Por ejemplo:

> tmp <- scan(what='''') 1: /////str 2: Read 1 item > print(tmp) [1] "//////////str" > cat(tmp, ''/n'') /////str >