Skip to content

[R-es] "\." vs "\\."

3 messages · David A.C., Carlos J. Gil Bellosta, Jorge I Velez

#
Hola, ¿qué tal?

"\" es un caracter especial, el "escape". No significa nada por sí sino 
que da sentido especial al caracter que lo sigue.

De hecho, para escribir una barra de izquierda a derecha tienes que 
escribir "\\".

En ciertos ámbitos, "." también es un caracter especial que significa 
"cualquier caracter". Por eso strsplit parte por "todos los caracteres":

 > strsplit("a.c",".")
[[1]]
[1] "" "" ""

Si quieres partir por "." tienes que pasar el caracter "normal" ".", que 
se representa como "\.". Pero para pasar "\." a R tienes que escribir 
"\\." previamente.

 > strsplit("a.d","\\.")
[[1]]
[1] "a" "d"

Cuando escribes "\\.", R "lee" "\." y strsplit entiende que quieres usar 
"." como caracter en sí y no como almohadilla para representar 
"cualquier caracter".

Si tienes un camino en Windows (que usa la desafortunada barra "\" para 
separar los directorios) a un en UNIX, tienes que hacer algo así como

 > gsub( "\\\\", "/", camino.de.windows )
[1] "uno/dos"

En ese caso, al escribir "\\\\", R lee "\\", que es, como se ha indicado 
arriba, la barra inclinada (de izda. a dcha.).

Es un lío pero es lo que hay.

En cuanto a trsplit("a.d","\."), imagino que R no entiende muy bien de 
qué se trata, ignora la barra, lanza un "warning" y usa "." en el 
sentido de almohadilla.

Un saludo,

Carlos J. Gil Bellosta
http://www.datanalytics.com
David A.C. wrote: