2013-08-03 15 views
13

Chcę wyświetlić listę wszystkich plików w katalogu spełniającym określone warunki (datę i walutę). Więc tylko jeden warunek argument pattern w list.files działa dobrze:Pliki listy z wieloma warunkami

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

Dla wielu warunków Próbowałem:

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

Ale miał taki sam wynik jak w pierwszej. Czy istnieje sposób na wiele kryteriów w argumencie pattern z list.files?

Odpowiedz

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

Alternatywnie, można skonstruować wyrażenie regularne na wzór, który pasuje tylko nazwy plików zawierających oba ciągi, ale to czarodziej spotkania.

+0

Działa dobrze, ale miałem nadzieję, że rozwiążę to w argumencie 'pattern' zamiast dodawać kolejną linię, ale myślę, że twoje jest najlepszym rozwiązaniem. – capm

+0

OP nie poprosił o podanie drugiej linii do wyniku pierwszego ... więc nie można tego zrobić w jednym wierszu? (nie mówię, że to nie jest najlepsze rozwiązanie) –

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

To polecenie filtruje je według waluty, wynikiem jest ciąg znaków zawierający pliki zawierające w nazwie nazwę USD, ale nie filtruje według daty. – capm

+1

Pionowy pasek oznacza "lub", stąd zwracane są wszystkie pliki, które pasują do daty i/lub waluty. Jak filtrować w obu warunkach? – Dendrobates

+1

nie działa, zastępując '&' yields character (0) –

Powiązane problemy