Найдите слова в списке строк

У меня есть

words <- c("word1", "word")
text <- c("this is word1", "this is word2", "this is word4")

Если я использую sapply(words, grepl, text), вы получите ответ ИСТИНА и ЛОЖЬ, вместо этого как я могу получить точные слова, которые совпали, чтобы ответ был

"this is word1"

Я новичок в R, простите за такой глупый вопрос. Любые идеи приветствуются.


person Domnick    schedule 25.09.2017    source источник


Ответы (1)


Одним из вариантов было бы создать границу слова, а затем использовать grep, чтобы избежать частичного совпадения строк, а с value = TRUE он возвращает строку вместо индекса.

grep(paste0("\\b(", paste(words, collapse="|"), ")\\b"), text, value = TRUE)
#[1] "this is word1"
person akrun    schedule 25.09.2017
comment
Может ли это быть проверено на word=test text=c(test foo,word 1, word2) grep(paste0(\\b(, paste(word, свернуть=|), )\\b), text, value = TRUE) .который предоставляет мне тест foo, но не хочет, чтобы он не давал мне ответа или нулевого значения (поскольку сопоставление не найдено)? - person Domnick; 25.09.2017
comment
@Domnick Мне непонятно твое состояние. Если вам нужно точное совпадение, используйте == или %in%, т.е. which(word==text) - person akrun; 25.09.2017
comment
хорошо..просто из любопытства, можно ли сделать наоборот, то есть, если слово совпало, получить слово, для которого было найдено совпадение, из переменной words? - person Domnick; 25.09.2017