2012-06-01 16 views
5

Tengo una gran cantidad de datos donde el delimitador es una barra diagonal inversa. Lo estoy procesando en R y me está costando encontrar cómo dividir la cadena, ya que la barra invertida es un metacarácter. Por ejemplo, una cadena se vería así:strsplit en R con un metacarácter

1128\0019\XA5\E2R\366\00=15 

y quiero dividirlo por el carácter \, pero cuando funciono con el comando strsplit:

strsplit(tempStr, "\\") 
Error in strsplit(tempStr, "\\") : 
    invalid regular expression '\', reason 'Trailing backslash' 

Cuando intento utilizado el " opción fija", no se ejecuta porque está esperando algo después de la barra invertida:

strsplit(tempStr, "\", fixed = TRUE) 

por desgracia, no puedo preprocesar los datos con otro programa porque los datos se gener ated a diario.

Respuesta

14

Su línea de código es (aunque no se dice explícitamente):

strsplit(tempStr, "\\") 

y debe ser

strsplit(tempStr, "\\\\") 

Esto se entenderá como "\\", que los regulares La expresión lo entenderá como "\".

+0

lamentablemente esto no está funcionando ... Acabo de recuperar la misma cadena. ¿Alguna otra idea? Gracias. – newRUser

+2

¿Podría proporcionar un ejemplo autónomo (es decir, obtenerlo en código R para que podamos ejecutarlo?) –

+0

Sí, el mismo problema ... cuando lo hago \\\\, elimina cualquier aparición de doble barra, pero \\ obtiene el error anterior, y \\\ intenta escapar de la siguiente comilla ... –

3

Sospecho que sus datos se encuentran en algún tipo de archivo. Si este es el caso, utilice read.table pero especifique el delimitador de forma explícita. Por ejemplo, supongamos que el archivo fue:

a\b\c\d 
e\f\g\h 

luego de leer esto en R, utilice el comando:

read.table("file.txt", sep="\\") 
-1

Prueba esto:

strsplit(tempStr, "\"") 
Cuestiones relacionadas