R grep: existe-t-il un opérateur AND?
Supposons que j'ai les données suivantes cadre:
User.Id Tags
34234 imageUploaded,people.jpg,more,comma,separated,stuff
34234 imageUploaded
12345 people.jpg
Comment pourrais-je utiliser grep (ou un autre outil) pour seulement saisir les lignes qui contiennent à la fois "imageUploaded" et "les gens"? En d'autres termes, comment pourrais-je créer un sous-ensemble qui comprend seulement les lignes avec les chaînes "imageUploaded" ET "people.jpg", quel que soit l'ordre.
J'ai essayé:
data.people<-data[grep("imageUploaded|people.jpg",results$Tags),]
data.people<-data[grep("imageUploaded?=people.jpg",results$Tags),]
Est-il un ET l'opérateur? Ou peut-être une autre façon d'obtenir le résultat escompté?
source d'informationauteur Rob | 2012-11-02
Vous devez vous connecter pour publier un commentaire.
Grâce à cette réponsecette expression semble fonctionner. Vous souhaitez utiliser
grepl()
qui renvoie à une logique d'index dans votre objet de données. Je ne prétends pas comprendre pleinement le fonctionnement interne de la regex, mais peu importe:J'aime @Chase de réponse, et il est de bon sens pour moi, mais il peut être un peu dangereux d'utiliser des constructions que l'on ne comprend pas tout à fait.
Cette réponse est destinée à rassurer tous ceux qui voudraient utiliser @thelatemail est plus simple d'approche que ça fonctionne tout aussi bien et est complètement en concurrence speedwise. C'est certainement ce que j'aimerais utiliser dans ce cas. (Il est également rassurant de constater que les plus sophistiqués Perl-compatible-regex ne paie pas le coût pour sa puissance et son extensibilité aisée.)
Pour des raisons de lisibilité du saké, vous pourriez faire:
Ci-dessous est une alternative à grep à l'aide de hadley est
stringr::str_detect()
. Cela évite l'utilisation deperl=true
@jan-stanstrup. En outre, ladplyr::filter()
sera de retour les lignes dans le dataframe elle-même, si vous n'avez jamais besoin de quitter le df.C'est plus simple et fonctionne si "people.jpg" suit toujours "imageUploaded"