Вот один из способов сделать это, используя пакет stringi
напрямую. Однако есть некоторые граничные соображения, которые вам нужно объяснить / рассмотреть более внимательно
# Generate some data
xxx <- tibble(Text = c("asdasd", ":o)", "hej :o) :o) :-*"))
Вы хотите посчитать количество смайликов, которые используются в каждой строке, поэтому вам нужно учитывать обнаружение строки для каждого смайлика. str_detect()
вернет наличие любых смайликов, но не чисел, поэтому вместо них мы будем использовать stri_count_fixed()
.
Например
library("stringi")
library("textclean")
# Run through each emoticon
# see if it matches each tweet
# Compute the number of hits
rowSums(sapply(lexicon::hash_emoticons$x, function(i) {
stringi::stri_count_fixed(xxx$Text, pattern=i)
}))
, который возвращает
[1] 0 2 5
Теперь, если вы посмотрите на входную строку, то увидите 4 смайлика. Элемент :o)
будет соответствовать двум смайликам :o
и :o)
, поэтому второй элемент равен 2. И наоборот, строка hej :o) :o) :-*
вернет 5, потому что она соответствует :o
дважды, :o)
дважды и :-*
один раз.