2016-03-25 15 views
1

Ich möchte den Musterausdruck in R verwenden, um Dateien in meinem Verzeichnis zu finden, die mit "ReportName*.HTML" übereinstimmen. Das bedeutet, dass ich nur Dateien mit bestimmten Dateinamen und Erweiterungen finden möchte, aber zwischen ihnen gibt es dynamische Zeichen.R Platzhalter in der Mitte eines Ausdrucks

Hier ist ein Beispiel: Ich möchte alle Berichte finden, die mit "2016 Operations" beginnen, aber mit der Erweiterung ".HTML" enden. Derzeit versuche ich:

files.control <- dir(path, pattern="^2016 Operations*.HTML$") 

Warum funktioniert das nicht? Ich mag die eine Zeile Code; es ist so einfach.

+0

Verwenden Sie 'files <- list.files (pattern =" words. * HTML ", full.names = TRUE)' Angenommen, Wörter <- c ('cat', 'dog'); pat <- paste0 ("(", einfügen (words, collapse = "|"), "). * HTML"); files <- list.files (pattern = pat) ' – akrun

+0

Ich weiß auch nicht, warum das so ist, wenn Sie eine Antwort auf diese online finden können, zeigen Sie mir –

+0

Ich bin nicht der Downvoter. Also, ich denke, die Aufgabe, die Antwort online zu finden, liegt beim Downvoter. Bitte prüfen Sie, ob der obige Code Ihnen hilft. – akrun

Antwort

5

Die "ReportName*.HTML" Syntax wird als Glob bezeichnet und wird in R über das folgende unterstützt, das einen Zeichenvektor des aktuellen Verzeichnisdateinamens zurückgibt, der mit ReportName beginnt und mit .HTML endet.

Sys.glob("ReportName*.HTML") 

Die R-Funktion glob2rx Kleckse in reguläre Ausdrücke übersetzen wird so das die gleiche Sache tut:

glob2rx("ReportName*.HTML") 
## [1] "^ReportName.*\\.HTML$" 
:

dir(pattern = glob2rx("ReportName*.HTML")) 

Wir haben den regulären Ausdruck mit einem glob wie dies im Zusammenhang entdecken

und Sie können weitere Informationen über reguläre Ausdrücke aus R über die Hilfe ?regex und weitere Informationen unter den Links am Ende dieser Seite finden: https://code.google.com/archive/p/gsubfn/

Verwandte Themen