2015-03-01 2 views
0

Я хочу сделать gsub с большим количеством вариаций в пространствах.Игнорирование пробела между словами для gsub в R

Мой текст

Yes, please periodically send me e-mail updates 

Я хочу убрать это предложение. Но у меня много вариантов этого в моем корпусе. Например, у меня есть

Yes, please periodically send me e-mail updates 
Yes, please periodically send me e-mail updates 
Yes, please periodically send me e-mail updates 

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

gsub("Yes, please periodically send me e-mail updates", "", text)   
gsub("Yes, please periodically send me e-mail updates", "", text)   
gsub("Yes, please periodically send me e-mail updates", "", text)   

Я считаю, что есть лучший способ удалить эти предложения одним кодом. Спасибо за любую помощь!

+1

Вы пробовали регулярное выражение одного или нескольких операторов (+) после каждого пробела? – bloodyKnuckles

+0

Это сообщение реплицируется http://stackoverflow.com/questions/5992082/how-to-remove-all-whitespace-from-a-string –

ответ

3

Используйте [[:space:]]+ для соответствия одному или нескольким местам.

gsub("Yes, please periodically[[:space:]]+send[[:space:]]+me[[:space:]]+e-mail[[:space:]]+updates", "", text) 
+2

Я собирался предложить что-то подобное, используя 'gsub (" \\ s " , "\\\\ s +", pattern) 'как« шаблон », где' pattern <- «Да, пожалуйста, периодически отправляйте мне обновления по электронной почте». Следует сохранять несколько раз набирать '[[: space:]] +'. – A5C1D2H2I1M1N2O1R2T1

2

Возможно, я не понимаю вопрос, но не проще ли заменить «Да, ... обновления», чтобы охватить все возможные дополнительные пробелы?

text <- c("Yes, please periodically send me e-mail updates", 
      "Yes, please periodically send me e-mail updates", 
      "Yes, please periodically send me e-mail updates") 
gsub("^Yes,.*updates", "", text) 
[1] "" "" "" 
+0

Нет, если существуют другие предложения с этим началом и концом! Пример: «Да, я хотел бы, чтобы вы только удалили предложения, запрашивающие периодические обновления по электронной почте» – ping

+0

@ping, хорошая точка. Полагаю, я мог бы добавить некоторые взгляды на будущее или заглянуть сзади, но если это бесплатные текстовые ответы, невозможно было бы охватить все возможности. Но три строки OP были достаточно структурированы. – lawyeR

1
library(magrittr) 
text_to_remove <- "Yes, please periodically send me e-mail updates" 
text %>% gsub([[:space:]]+, " ") %>% gsub(text_to_remove , "") 

Немного "глупый" подход. Назначьте строку, которую хотите удалить, без двойных (тройных и т. Д.) Пробелов. Замените несколько пробелов исходного текста на одно место, а затем замените текст, который хотите удалить, с помощью "".

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