2016-12-01 1 views
0

J'essaie d'extraire la phrase exacte des phrases de R. Elle extrait aussi la phrase où elle correspond partiellement. Exemple:Impossible d'extraire la phrase exacte de la phrase dans R

phrase <- c("r is not working","roster is not working") 
    sentence <- c("ABC is not working and roster is not working","CDE is working but printer is not working") 

    extract <- sapply(phrase, grepl, x = sentence) 
    extract 

Il donne la sortie comme:

   r is not working  roster is not working 
    [1,]    TRUE     TRUE 
    [2,]    TRUE     FALSE 

Ma sortie désirée est:

   r is not working  roster is not working 
    [1,]    FALSE     TRUE 
    [2,]    FALSE     FALSE 

expression "r ne fonctionne pas" ne doit pas correspondre avec les deux phrases. Y a-t-il un moyen de gérer cela? Des pensées? Merci!!

+0

Peut-être ajouter des limites de mots, comme dans 'spply (paste0 (" \\ b ", expression," \\ b "), grepl, x = phrase)' –

+0

"r ne fonctionne pas" fait correspondre les deux chaînes mais en ajoutant un espace avant le r: "r ne fonctionne pas" empêchera le match. – Dave2e

Répondre

1

grepl évalue les expressions régulières.

Si vous voulez coller avec ceux-ci, ancre vos habitudes de recherche au début et à la fin de la chaîne:

phrase <- c("^r is not working$", "^roster is not working$") 

Si vous voulez au lieu de vérifier les correspondances exactes, utilisez simplement

extract <- sapply(sentence, `%in%`, phrase)