在gsub替换中的功能

时间:2017-11-02 14:40:08

标签: r regex string substring

是否可以在gsub替换短语中应用函数?让我们在str_to_title之后说出

This Is One Hell Of A Blahblah Cake

我想忽略str_to_title函数效果中的某些单词,以便我有

This is one Hell of a blahblah Cake

我知道str_to_title有自己的异常列表,但我想通过将一些短语恢复为小写来自定义该列表。

我目前的做法是

gsub("( Is | One | BlahBlah )", tolower("\\1"), str_to_title(x))

gsub将无法看到tolower功能。一个想法如何实现这一目标?我们如何用一个作用于匹配字符串的函数替换正则表达式?

1 个答案:

答案 0 :(得分:1)

您可以使用\\L作为替换前缀,将其转换为小写:

s = "This Is One Hell Of A Blahblah Cake"

gsub("(\\bIs\\b|\\bOne\\b|\\bBlahblah\\b)", "\\L\\1", s, perl = T)
# [1] "This is one Hell Of A blahblah Cake"

或者如评论@joran,您可以使用gsubfn包:

library(gsubfn)
options(gsubfn.engine = "R")
gsubfn("\\bIs\\b|\\bOne\\b|\\bBlahblah\\b", ~ tolower(x), s)
# [1] "This is one Hell Of A blahblah Cake"