У меня есть фрейм данных подстрок и список строк. Я хочу проверить, какие подстроки соответствуют какому элементу, и записать индексы списка совпадений в фрейм данных.
my_list <- list("hello there", "how are you?", "I am fine thanks")
words <- data.frame(text = c("he", "she", "they", "you", "I"), index = NA)
Окончательный результат должен быть:
> words
text index
1 he NA
2 she NA
3 they NA
4 you 2
5 I 3
Я пробовал al oop с grepl, который не сработал как при записи содержимого вместо индекса, так и из-за неправильной записи элемента:
for (i in 1:nrow(words)){
x <- grepl(words$text[i], my_list, fixed = T)
if (x == T) {
words$index[i] <- paste(my_list[i])
}
}
> words
text index
1 he hello there
2 she <NA>
3 they <NA>
4 you <NA>
5 I <NA>
Я также попробовал этот ответ который выглядел хорошо но который возвращал только вектор FALSE до тех пор, пока my_list.
EDIT: теперь я немного ближе к этому l oop, хотя он все еще неправильно индексирует "he" из-за "_he_llo there" .
for (i in seq_along(my_list)){
for (j in 1:nrow(words)){
if (grepl(words$text[j], my_list[i], fixed = T) == T){
words$index[[j]] <- i
}
}
}
> words
text index
1 he 1
2 she NA
3 they NA
4 you 2
5 I 3
Итак, как мне сопоставить элемент? А затем, как я могу записать индекс согласованного элемента?
Спасибо!