Mgsub с одним шаблоном, но несколько замен в R - PullRequest
0 голосов
/ 10 ноября 2018

В строке

text <- "Poem number one, Poem number two, Poem number three" 

Я хочу заменить все «Стихотворения» различными заменами. Я хочу получить:

"First number one, Second number two, Third number three" 

Я пытался:

mgsub(text, c("Poem","Poem", "Poem"), c("First", "Second", "Third"))

Но я получаю:

"First number one, First number two, First number three" 

1 Ответ

0 голосов
/ 10 ноября 2018

Это неправильный способ использования mgsub. Предполагается, что элементы в аргументе pattern будут разными (это то, во что я могу поверить из документации. Во всяком случае, вы можете делать повторные вызовы функции sub:

text = "Poem number one, Poem number two, Poem number three"

pattern = c("Poem", "Poem", "Poem")
replacement = c("First", "Second", "Third")

new_text = text
for (i in 1:length(pattern))
    new_text = sub(pattern[i], replacement[i], new_text)

> new_text
[1] "First number one, Second number two, Third number three"

gsub не будет работать, поскольку он заменяет все экземпляры pattern в первом вызове.

...