Я думаю, что мое решение дает вам желаемый результат - то есть для каждого слова в вашем списке «dict» вы можете видеть, сколько раз оно встречается в каждом предложении. Каждая строка - это запись в df $ col2, т.е. предложение. «Dict» - это ваш вектор терминов, которым вы хотите соответствовать. Мы можем l oop по вектору и для каждой записи в векторе сопоставить, сколько раз эта запись появляется в каждой строке / предложении, используя stringr :: str_count. Обратите внимание на синтаксис для str_count: str_count (проверяемая строка, выражение, которое вы пытаетесь сопоставить)
str_count возвращает вектор, показывающий, сколько раз слово появляется в каждой строке. Я создаю фрейм данных из этих векторов, который будет содержать такое же количество строк, как и записей в векторе dict. Затем вы можете просто привязать «dict» к этому фрейму данных и увидеть, сколько раз каждое слово используется в каждом предложении. Я корректирую имена столбцов в самом конце, чтобы вы могли сопоставить слова с # в предложении. Обратите внимание: если вы хотите вычислить строку, это означает, что вам нужно выделить столбец «dict» в окончательном фрейме данных, потому что это символ.
library(stringr)
col1<- c("Henrik", "Joseph", "Lucy")
col2 <- c("I am going to get groceries", "He called me at six.", "No, he
did not")
df <- data.frame(col1, col2)
dict <- c("groceries", "going", "me")
word_matches <- data.frame()
for (i in dict) {
word_tot<-(str_count(df$col2, i))
word_matches <- rbind(word_matches,word_tot)
}
word_matches
colnames(word_matches) <- paste("Sentence", 1:ncol(word_matches))
cbind(dict,word_matches)
dict Sentence 1 Sentence 2 Sentence 3
1 groceries 1 0 0
2 going 1 0 0
3 me 0 1 0