2012-06-01 3 views
5

У меня есть большой объем данных, где разделитель является обратным слэшем. Я обрабатываю его в R, и мне сложно найти, как разбить строку, поскольку обратная косая черта - это метасимвол. Например, строка будет выглядеть следующим образом:strsplit в R с метасимволом

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

, и я хочу разделить его по \ характер, но когда я запускаю команду strsplit:

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

Когда я пытаюсь использовал " фиксированный вариант», он не работает, потому что он ожидает что-то после обратной косой черты:

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

к сожалению, я не могу предобработки данных с другой программой, поскольку данные Gener ежедневно.

ответ

14

Ваша строка кода (если вы не говорите это явно):

strsplit(tempStr, "\\") 

и должен быть

strsplit(tempStr, "\\\\") 

Это будет читаться как «\\», который регулярная выражение будет понимать как «\».

+0

, к сожалению, это не работает ... Я просто возвращаю ту же строку. Любые другие идеи? Благодарю. – newRUser

+2

Не могли бы вы предоставить автономный пример (то есть получить его в R-код, чтобы мы могли его запустить?) –

+0

Да, такая же проблема ... когда я это делаю \\\\, он удаляет любые вхождения двойной косой черты, но \\ получает указанную выше ошибку, а \\\ пытается избежать следующей метки кавычек ... –

3

Я подозреваю, что ваши данные в некотором роде. Если это так, используйте read.table, но явно укажите разделитель. Например, предположим, что ваш файл был:

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

затем прочитать в R, используйте команду:

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

Попробуйте это:

strsplit(tempStr, "\"")