Заменить только проанализированное регулярное выражение

Этот вопрос аналогичен вопросу стека Регулярное выражение, проанализированное с заменой grepl.

Цель состоит в том, чтобы проанализировать регулярное выражение и заменить ТОЛЬКО соответствующий шаблон. Пример:

data <- c("cat 6kg","cat g250", "dog","cat 10 kg", "no cat") 

Чтобы проанализировать интересующие совпадения cat:

data[grepl("cat",data)]
[1] "cat 6kg"   "cat g250"  "cat 10 kg" "no cat"

Идеальный результат заменяет все вхождения cat на chicken:

[1] "chicken 6kg"   "chicken g250"  "chicken 10 kg" "no chicken"

Есть идеи, как этого добиться? Спасибо ребята.


person remi    schedule 20.08.2015    source источник


Ответы (1)


Используйте gsub:

gsub("cat", "chicken", data)

[1] "chicken 6kg"   "chicken g250"  "dog"           "chicken 10 kg" "no chicken"

или если вам нужны только те, которые содержат кошку:

gsub("cat", "chicken", data[grepl("cat",data)])

[1] "chicken 6kg"   "chicken g250"  "chicken 10 kg" "no chicken" 
person jeremycg    schedule 20.08.2015
comment
Спасибо! Это помогает. Я забыл упомянуть, что результат также должен сохранить запись о собаке (без изменений). Любая идея, как это сделать? - person remi; 20.08.2015