gsubfn
похоже на gsub
, но вместо замены вхождений регулярного выражения, указанного в первом аргументе, на фиксированную строку, он передает совпадения функции, указанной во втором аргументе, заменяя входные данные выходными даннымифункция.Функция может быть указана в формуле, где тело функции находится справа, а аргумент, здесь просто s
, определяется путем нахождения свободных переменных в правой части.
library(gsubfn)
gsubfn("\\S+",
~ if (length(unlist(gregexpr("_", s))) >= 3) gsub("_", " ", s) else s,
text)
подача:
[1] "hi, how_are_you? that's_great. yes i'm als0 @k"