2013-08-03 18 views
13

Ich möchte alle Dateien in einem Verzeichnis auflisten, das bestimmte Bedingungen (Datum und Währung) erfüllt. Also mit nur einer Bedingung funktioniert das Argument pattern in list.files gut:R Listet Dateien mit mehreren Bedingungen auf

file.ls <- list.files(path='~/DATA/PiP/Curvas/',pattern='20130801') 

Für mehrere Bedingungen, die ich versucht habe:

file.ls <- list.files(path='~/DATA/PiP/Curvas/',pattern=c('20130801','USD')) 

Aber hatte das gleiche Ergebnis wie die erste. Gibt es eine Möglichkeit, mehrere Kriterien in pattern Argument von list.files zu haben?

Antwort

3
Filter(function(x) grepl("USD", x), file.ls) 

Alternativ können Sie einen regulären Ausdruck für Muster erstellen, die nur Spiele Dateinamen beide Zeichenketten enthalten, aber das ist ein Spiel des Assistenten.

+0

Es funktioniert gut, aber ich hatte gehofft, es in der "Muster" -Argument auszuarbeiten, anstatt eine andere Zeile hinzuzufügen, aber ich denke, Ihre ist die beste Lösung. – capm

+0

OP hat nicht nach einer zweiten Zeile gefragt, die auf das Ergebnis des ersten angewendet werden soll ... also ist es unmöglich, dies in einer Zeile zu tun? (nicht zu sagen, es ist nicht die beste Lösung) –

13
file.ls <- list.files(path='~/DATA/PiP/Curvas/',pattern="20130801|USD") 
+1

Dieser Befehl filtert sie nach Währung, das Ergebnis ist eine Zeichenfolge mit den Dateien, die USD im Namen enthält, aber nicht nach dem Datum gefiltert. – capm

+1

Der vertikale Balken bedeutet "oder", daher werden alle Dateien zurückgegeben, die entweder dem Datum und/oder der Währung entsprechen. Wie kann man beide Bedingungen filtern? – Dendrobates

+1

funktioniert nicht, ersetzt durch "&" ergibt Zeichen (0) –

Verwandte Themen