是否可以在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
功能。一个想法如何实现这一目标?我们如何用一个作用于匹配字符串的函数替换正则表达式?
答案 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"