Я пытаюсь написать функцию, чтобы получить частоту определенного слова из некоторого текста.Затем используйте эту функцию для вычисления частоты выбранного слова для каждой строки во фрейме данных.
Пока что я занимаюсь созданием функции, которая принимает ввод строки и шаблона (то есть str,шаблон).Поскольку grep
захватывает все паттерны в строке, я чувствовал, что length
позаботится о захвате частоты выбранного паттерна.
word_count = function(str,pattern) {
string = gsub("[[:punct:]]","",strsplit(str," "))
x = grep("pattern",string,value=TRUE)
return(length(x))
}
Для фрейма данных (my_df) это выглядит так:
id description
123 "It is cozy and pretty comfy. I think you will have good time
here."
232 "NOT RECOMMENDED whatsover. You will suffer here."
3333 "BEACHES are awesome overhere!! Highly recommended!!"
...so forth(more than obs.15000)
Я фактически сделал всю часть описания строчными, так что на самом деле это выглядит примерно так:
id description
123 "it is cozy and pretty comfy. i think you will have good time
here."
232 "not recommended whatsover. you will suffer here."
3333 "beaches are awesome overhere!! highly recommended!!"
...so forth(more than obs.15000)
Тогда, что я действительно хочу, чтобы моя функция сделала:
word_count(my_df$description[1],recommended)
[1] 0
word_count(my_df$description[3],highly)
[1] 1
Но что она делает:
word_count(my_df$description[1],recommended)
[1] 2
word_count(my_df$description[3],highly)
[1] 2
По сути, это неправильный ответ.Надеюсь, я хочу использовать эту функцию для применения ко всем строкам в фрейме данных, и я планирую сделать это с помощью if
.Тем не менее, при тестировании отдельных строк он, кажется, не выполняет ту работу, которую я хочу.