strsplit в R с метасимволом

У меня есть большой объем данных, где разделителем является обратная косая черта. Я обрабатываю его в 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)

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


person newRUser    schedule 01.06.2012    source источник


Ответы (3)


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

strsplit(tempStr, "\\")

и должно быть

strsplit(tempStr, "\\\\")

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

person David Robinson    schedule 01.06.2012
comment
к сожалению, это не работает... Я просто возвращаю ту же строку. Любые другие идеи? Спасибо. - person newRUser; 08.06.2012
comment
Не могли бы вы предоставить автономный пример (то есть вставить его в код R, чтобы мы могли его запустить?) - person David Robinson; 08.06.2012
comment
Да, та же проблема... когда я делаю \\\\, он удаляет все вхождения двойной косой черты, но \\ получает указанную выше ошибку и \\\ пытается избежать следующей кавычки... - person Joshua Eric Turcotte; 07.09.2016
comment
@JoshuaEricTurcotte, не могли бы вы привести самодостаточный пример? - person David Robinson; 07.09.2016

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

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

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

read.table("file.txt", sep="\\")
person csgillespie    schedule 01.06.2012

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

strsplit(tempStr, "\"")
person Li Chen    schedule 10.04.2017