str_replace не заменяет все вхождения, а gsub заменяет?

Я пытаюсь удалить скобки из строки, подобной приведенной ниже.

library(stringr)

x <- "(Verhoeff,1937)"

str_replace(string = x, pattern = "(\\()|(\\))", replacement = "")
[1] "Verhoeff,1937)"

gsub(pattern = "(\\()|(\\))", replacement = "", x = x)
[1] "Verhoeff,1937"

str_replace не находит закрывающую скобку? Есть идеи, почему?


person zankuralt    schedule 01.12.2017    source источник
comment
substr_replace; gsubstr_replace_all («g» означает «глобальный»).   -  person Konrad Rudolph    schedule 01.12.2017
comment
Благодарю за разъяснение.   -  person zankuralt    schedule 01.12.2017


Ответы (1)


Он соответствует только первому вхождению, тогда как gsub делает все сразу. Вместо этого используйте str_replace_all:

str_replace(string = "aa", pattern = "a", replacement = "b") # only first

str_replace_all(string = "aa", pattern = "a", replacement = "b") # all
person Tino    schedule 01.12.2017
comment
то есть str_replace равно sub, тогда как str_replace_all равно gsub. - person shosaco; 01.12.2017