2016-09-16 9 views
1

У меня есть словарь с терминамипоиска первого текста соответствия для словаря терминов в R

terms <- c("hello world", "great job") 
terms <- as.data.frame(terms) 

, и я хотел бы найти первый матч в дополнительном data.frame, который содержит документы

doc <- c("i would like to say hello worlds", "hey friends hello world everyone", "i'm looking for a great job", "great job") 
docs <- as.data.frame(doc) 

желаемый результат:

foundtext <- c("i would like to say hello worlds","i'm looking for a great job") 
output <- cbind(terms, foundtext) 

Благодарим вас за помощь!

ответ

0

Это решение довольно простое и работает. Как я уже сказал, для этого я не использовал регулярные выражения.

doc <- c("i would like to say hello worlds", "hey friends hello world everyone", "i'm looking for a great job", "great job") 
docs <- as.data.frame(doc) 
docs$match <- "not found" #or just empty 
for (i in terms){ 

    docs$new <- grepl(i, docs$doc, perl=TRUE) 
    docs$match[docs$new=="TRUE"] <- i 
    next 

} 
docs <- subset(docs,,1:2) 
docs$dupl <- !duplicated(docs$match, fromLast=FALSE) 
docs <- subset(subset(docs, dupl=="TRUE"),,1:2) 
docs