Ich bin sehr neu in R und arbeite daran, ein R-Skript zu aktualisieren, um eine Reihe von mit ArcGIS erstellten DBF-Tabellen zu durchlaufen und eine Reihe von Diagrammen zu erstellen.
Ich habe ein Verzeichnis, C: \ Scratch, das alle meine .dbf-Dateien enthält. Wenn ArcGIS diese Tabellen erstellt, enthält es jedoch auch eine .dbf.xml-Datei. Ich möchte diese .dbf.xml-Dateien aus meiner Dateiliste und damit meiner Iteration entfernen. Ich habe erfolglos versucht, mit regulären Ausdrücken zu suchen und zu experimentieren. Dies ist der grundlegende Ausdruck, den ich verwende (mit Ausnahme aller verschiedenen Experimente):
files <- list.files(pattern = "dbf")
Kann mir jemand eine Richtung geben?
glob2rx()
oft hilfreich.Antworten:
$
am Ende bedeutet, dass dies das Ende der Zeichenfolge ist."dbf$"
funktioniert auch, aber das Hinzufügen\\.
(.
ist ein Sonderzeichen in regulären Ausdrücken, sodass Sie es maskieren müssen) stellt sicher, dass Sie nur Dateien mit der Erweiterung abgleichen.dbf
(falls Sie zB.adbf
Dateien haben).quelle
ignore.case
Argument für die Funktion, alsolist.files(pattern = "\\.dbf$", ignore.case=TRUE)
.?list.files
Weitere Informationen finden Sie auf der Hilfeseite für diese Funktion ( ).Versuchen Sie dies, bei dem Globs anstelle von regulären Ausdrücken verwendet werden, sodass nur die Dateinamen ausgewählt werden, die auf enden
.dbf
quelle
Befestigen Sie das Muster
"\\.dbf"
am Ende der Zeichenfolge mit dem folgenden$
Zeichen:quelle
\` escape the
.` jetzt. Man wundert sich also, warum dies abgelehnt wurde?Ich bin nicht sehr gut darin, ausgefeilte reguläre Ausdrücke zu verwenden, daher würde ich diese Aufgabe folgendermaßen ausführen:
In der ersten Zeile werden nur alle Dateien aus dem Arbeitsverzeichnis aufgelistet. Zweitens wird alles gelöscht, was ".xml" enthält (grep gibt Indizes solcher Zeichenfolgen im Vektor 'files' zurück; eine Untermenge mit negativen Indizes entfernt entsprechende Einträge aus dem Vektor). Das "feste" Argument für die grep-Funktion ist nur meine Laune, da ich normalerweise möchte, dass es einen groben Mustervergleich ohne ausgefallene reguläre Ausdrücke im Perl-Stil durchführt, was für mich eine Überraschung sein kann.
Ich bin mir bewusst, dass eine solche Lösung einfach Nachteile in meiner Ausbildung widerspiegelt, aber für einen Anfänger kann sie nützlich sein =) Zumindest ist es einfach.
quelle
-
Zeichen vorher entfernengrep
. Ich brauchte eine solche Lösung, um bestimmte Dateien aus einer Zip-Datei zu extrahieren. Rufen Sie zuerst die Dateiliste in einem data.frame ab, rufen Sie bestimmte Dateien ab und extrahieren Sie sie später.lf <- unzip(file, list=T)[,1]; files.shp <- lf[grep(".shp", lf, fixed=T)]
Gibt Ihnen die Liste der Dateien mit vollständigem Pfad:
quelle