Je suis très nouveau dans R et je travaille sur la mise à jour d'un script R pour parcourir une série de tables .dbf créées à l'aide d'ArcGIS et produire une série de graphiques.
J'ai un répertoire, C: \ Scratch, qui contiendra tous mes fichiers .dbf. Cependant, lorsque ArcGIS crée ces tables, il inclut également un fichier .dbf.xml. Je souhaite supprimer ces fichiers .dbf.xml de ma liste de fichiers et donc de mon itération. J'ai essayé de rechercher et d'expérimenter des expressions régulières en vain. C'est l'expression de base que j'utilise (à l'exclusion de toutes les différentes expériences):
files <- list.files(pattern = "dbf")
Quelqu'un peut-il me donner une direction?
glob2rx()
est souvent utile.Réponses:
$
à la fin signifie que c'est la fin de la chaîne."dbf$"
fonctionnera aussi, mais l'ajout\\.
(.
c'est un caractère spécial dans les expressions régulières donc vous devez l'échapper) assurez-vous de ne faire correspondre que les fichiers avec l'extension.dbf
(au cas où vous auriez par exemple des.adbf
fichiers).la source
ignore.case
argument de la fonction, donclist.files(pattern = "\\.dbf$", ignore.case=TRUE)
. Et regardez la page d'aide pour cette fonction (?list.files
) pour plus de détails.Essayez ceci qui utilise des globes plutôt que des expressions régulières pour ne sélectionner que les noms de fichiers qui se terminent par
.dbf
la source
Peg le motif à trouver
"\\.dbf"
à la fin de la chaîne en utilisant le$
caractère:la source
\` escape the
.` maintenant. Alors on se demande pourquoi cela a été déclassé?Je ne suis pas très doué pour utiliser des expressions régulières sophistiquées, donc je ferais une telle tâche de la manière suivante:
La première ligne répertorie simplement tous les fichiers du répertoire de travail. La seconde supprime tout ce qui contient ".xml" (grep renvoie les indices de ces chaînes dans le vecteur 'files'; le sous-ensemble avec des indices négatifs supprime les entrées correspondantes du vecteur). L'argument "fixe" pour la fonction grep n'est que mon caprice, car je veux généralement qu'il effectue une correspondance de motif grossière sans regexprs fantaisie de style Perl, ce qui peut me surprendre.
Je suis conscient qu'une telle solution reflète simplement des inconvénients dans mon éducation, mais pour un novice cela peut être utile =) au moins c'est facile.
la source
-
signe avantgrep
. J'avais besoin de ce genre de solution pour extraire des fichiers spécifiques d'un fichier zip. Tout d'abord, obtenez la liste des fichiers dans un data.frame et obtenez des fichiers spécifiques et extrayez-les plus tard.lf <- unzip(file, list=T)[,1]; files.shp <- lf[grep(".shp", lf, fixed=T)]
Vous donne la liste des fichiers avec le chemin complet:
la source