2017-05-12 1 views
0

SOLUTION:Comment appliquer Grepl pour la trame de données

Publié par @docendodiscimus: « Essayez une boucle sapply sur les motifs:

sapply(df_triggers$trigger, grepl, df_sen$sentence)" 

LA QUESTION INITIALE:

Je veux utiliser Grepl pour de multiples motifs définis en tant que trame de données. df_sen est présenté comme

sentence 
"She would like to go there" 
"I had it few days ago" 
"We have spent few millions" 

df_triggers se présente comme suit:

trigger 
few days 
few millions 

Et je veux créer une matrice où x phrase déclencheurs et à l'intersection pour voir 1 si le déclencheur a été trouvé dans une phrase et 0 si ce n'était pas.

J'ai essayé de le faire comme ceci:

df_sen = read.csv("df.csv", sep = ";",header = TRUE) 
df_triggers = read.csv("df.csv", sep = ";",header = TRUE) 
dat <- data.frame(v=df_sen$sentence) 
matrix <- grepl(df_triggers$trigger, dat$v) 
write.csv(matrix,file = "matrix.csv") 

Mais je vois le message d'erreur que j'ai plus de 1 modèle dans Grepl().

La sortie désirée est:

        few days few millions 
"She would like to go there"  0    0 
"I had it few days ago"    1    0 
"We have spent few millions   0    1 

Pourriez-vous me aider à atteindre ce résultat s'il vous plaît?

+0

Et le fait est que j'ai 2500 phrases. Donc je ne peux pas l'implémenter comme 'quelques jours | quelques millions' – ZverArt

+3

Essayez une boucle saphylle sur les modèles: 'spply (df_triggers $ trigger, grepl, df_sen $ sentence)' –

+0

@docendodiscimus Merci! Ça a bien marché! – ZverArt

Répondre

2
sapply(df_triggers$trigger, grepl, df_sen$sentence) 

de @docendodiscimus travaillé.