2014-12-26 10 views
1

Вот строка:Удалить ведущий обратный слэш из строки R

> raw.data[27834,1] 
[1] "\xff$GPGGA" 

Я попытался советы из следующих двух вопросов, но не повезло:

How to escape a backslash in R?

How to escape backslashes in R string

У кого-нибудь есть другое решение из вышеперечисленных вопросов, которые могут помочь? Идеальным решением было бы удалить часть "\xff", но для любой комбинации букв.

+2

Пожалуй 'GSUB (». * ([^ -За-z]. *) ',' \\ 1 ', "\ xff $ GPGGA") # [1] "$ GPGGA" ' – akrun

+0

Отлично работает, спасибо. Любая документация с дополнительными примерами указания символов таким образом? – Stu

+0

Просьба представить примеры, образцы в вашем исходном наборе данных, чтобы его можно было протестировать. – akrun

ответ

2

В этой строке нет обратной косой черты. Отображаемая обратная косая черта - это маркер перехода. Это и другие функции, связанные с вводом и отображением «особых ситуаций», описаны в справочной странице ?Quotes. Вам был предоставлен один регулярный метод эллиптического подхода к удалению. Вот несколько других подходов .... только некоторые из них действительно удалось добиться успеха, потому что \ff является первым «характер», и это на самом деле не юридическое, как R характер:

s <- "\xff$GPGGA" 
strsplit(s, "") 
#[[1]] 
#[1] NA 

Warning message: 
In strsplit(s, "") : input string 1 is invalid in this locale 

substr(s, 1,1) 
#Error in substr(s, 1, 1) : invalid multibyte string at '<ff>$GP<47>GA' 
gsub('.*([^A-Za-z].*)', '\\1',"\xff$GPGGA")#[1] 
#[1] "$GPGGA" 
?Quotes 
gsub('\xff', '',"\xff$GPGGA")#[1] 
#[1] "$GPGGA" 

Я думаю, что причина того, что регулярное выражение функции не задушают эту строку, так что регулярное выражение является фактически опосредованным системой процессом, тогда как strsplit и substr являются внутренними R-функциями.

@RichardScriven отправляет пример, и когда я попытался его воспроизвести, у меня появился еще один пример, показывающий, что отображение отображаемых символов является специфичным для системы. Я на OSX 10.10.1 (Yosemite)>

cat('\xff') 
ˇ 

(я кончили в знак числа (#), что я обычно в.)

+1

Эта точка может быть дополнительно подтверждена выходом из 'cat (" \ xff ")', который является . –

+0

Ницца. Теперь все это имеет смысл. – Stu

Смежные вопросы