R: заменить подчеркивание, повторенное непоследовательно более двух раз - PullRequest
0 голосов
/ 08 декабря 2018

Я получил набор данных с фразами, соединенными символами подчеркивания, например так:

text <- "hi, how_are_you? that's_great. yes_i'm_als0_@k"

Как и в этом примере, данные содержат цифры, символы, знаки пунктуации и пробелы.Я хочу заменить подчеркивания, когда они появляются 3 или более раз (как в yes_i'm_als0_@k), с одним пробелом.Желаемый результат:

"hi, how_are_you? that's_great. yes i'm als0 @k"

Иными словами, я получил набор данных с жестко запрограммированными нграммами и хочу сохранить униграммы, биграммы и триграммы.

1 Ответ

0 голосов
/ 08 декабря 2018

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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...