41 votes

Correspondance de modèle à l'aide d'un caractère générique

Comment identifier une chaîne à l'aide d'un caractère générique ?

J'ai trouvé glob2rx , mais je ne comprends pas très bien comment l'utiliser. J'ai essayé d'utiliser le code suivant pour sélectionner les lignes du bloc de données qui commencent par le mot blue :

 # make data frame
a <- data.frame( x =  c('red','blue1','blue2', 'red2'))

# 1
result <- subset(a, x == glob2rx("blue*") )

# 2
test = ls(pattern = glob2rx("blue*"))
result2 <- subset(a, x == test )

# 3
result3 <- subset(a, x == pattern("blue*") )

Cependant, ni l'un ni l'autre n'a fonctionné. Je ne sais pas si je devrais utiliser une fonction différente pour essayer de le faire.

4voto

Brian MacKay Points 10483

Vous êtes sur la bonne voie - le mot-clé que vous devriez rechercher sur Google est Expressions régulières. R les prend en charge de manière plus directe que cela en utilisant grep() et quelques autres alternatives.

Voici une discussion détaillée : http://www.regular-expressions.info/rlanguage.html

2voto

Brian D Points 136

Si vous souhaitez vraiment utiliser des caractères génériques pour identifier des variables spécifiques, vous pouvez utiliser une combinaison de ls() et grep() comme suit :

l = ls() vars.with.result <- l[grep("result", l)]

2voto

usct01 Points 482

Vous pouvez également utiliser le package data.table et sa fonction Like, les détails sont donnés ci-dessous Comment sélectionner les lignes R data.table en fonction de la correspondance de sous-chaîne (à la manière de SQL)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X