2013-09-12 3 views
1

Я хочу заменить все слова, начинающиеся с данного символа, с помощью другого слова. Пробовал gsub и str_replace_all но с небольшим успехом. В этом примере я хочу заменить все слова, начиная с R с помощью MM. gsub заменяет правильно только один раз:Заменить слова, начиная с определенного символа в R

gsub("^R*\\w+", "MM", "Red, Rome, Ralf") 

# [1] "MM, Rome, Ralf" 

Заранее спасибо

ответ

5

Вы должны либо удалить строку запуска якорь (^) или работать с вектором слов:

gsub("\\bR\\w+", "MM", "Red, Rome, Ralf") 
#[1] "MM, MM, MM" 


gsub("^R\\w+", "MM", c("Red", "Rome", "Ralf")) 
#[1] "MM" "MM" "MM" 

Кроме того, вы, вероятно, хотите «R» вместо «R *», поскольку последний может соответствовать 0 или более экземплярам «R». Регулярные выражения соответствуют только словам с двумя или более символами, первая из которых должна быть «R». Последнее регулярное выражение соответствует только словам в начале строки.

Благодаря @flodel для указания недостающей границы слова «\ b» в первом регулярном выражении!

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