Скажем, у меня есть следующая строка -
vector <- "this is a string of text containing stuff. something.com [email protected] and other stuff with something.anything"
Я хотел бы удалить строку, если она содержит @ или . , поэтому я хотел бы удалить something.com, [email protected] и something.anything. Я не хочу удалять stuff, потому что это конец предложения и не содержит .. В идеале я хотел бы иметь возможность использовать для этого трубу %>%.
@JohnGarland Спасибо, это приятно знать. На самом деле я выполняю анализ ключевых слов и передаю строку функции unest_tokens() в пакете tidytext. Однако, когда я получаю наиболее часто встречающиеся слова, все еще есть слова, которые не имеют смысла, поэтому я пытаюсь удалить их «до» с помощью функций tidytext.





gsub(" ?\\w+[.@]\\S+", "", vector)
[1] "this is a string of text containing stuff. and other stuff with"
Альтернатива (гораздо более лаконичному/простому) методу gsub:
gre <- gregexpr("[^ ]+[.@][^ ]+", vector)
regmatches(vector, gre)
# [[1]]
# [1] "something.com" "[email protected]" "something.anything"
regmatches(vector, gre) <- ""
vector
# [1] "this is a string of text containing stuff. and other stuff with "
Преимущество этого заключается в возможности замены их произвольно. Конечно, мы просто заменяем их здесь на "", так что это немного излишне, но если вам нужно как-то сдача значения (изменить каждую подстроку), то это более мощный механизм.
В пакете R «токенизаторы» есть функции, которые будут токенизировать различными способами, которые можно комбинировать. См. cran.r-project.org/web/packages/tokenizers/vignettes/…