Допустим, у меня есть датафрейм
Автор | Тексты песен |
Имя1 Текст (символы)
Имя2 Текст (символы)
Я хочу создать еще один столбец с помощью функции, которая для каждой строки извлекает текст из текста столбец, разделяется пробелами, затем перебирает каждый токен, чтобы увидеть, находится ли он внутри другого вектора, который я создал (поэтому я могу определить процент токенов в тексте, который находится внутри этого другого вектора).
Функция как я уже писал, ниже
ReturnPercentPosWord = function(textLyrics){
WhitespaceSplitText = strsplit(textLyrics, " ")
LengthSplitText = length(WhitespaceSplitText)
CountInPosList = 0
for (i in WhitespaceSplitText) {
if (i %in% PositiveWords$word) {
CountInPosList = CountInPosList+1
}
}
if (CountInPosList == 0) {
return(0)
}
PercentInPos = (CountInPosList/LengthSplitText)*100
return(PercentInPos)}
Я хочу применить эту функцию к каждой строке сейчас. Я пробовал
TestPOSwordsDF$PercentPositiveWords = ReturnPercentPosWord(TestPOSwordsDF$Lyrics)
и
TestPOSwordsDF$PercentPositiveWords = apply(TestPOSwordsDF[, c('Lyrics'),drop=F], 1, ReturnPercentPosWord)
Но я получаю сообщение о том, что the condition has length > 1 and only the first element will be used
Я был бы очень признателен за любую помощь в этом. Спасибо!