2015-07-23 9 views
9

R ma funkcję wypisywania plików w katalogu, który jest list.files(). Jest dostarczany z opcjonalnym parametrem pattern=, aby wyświetlić listę tylko plików pasujących do wzorca.Lista plików w R, które NIE pasują do wzorca

Pliki w katalogu data: File1.csv File2.csv new_File1.csv new_File2.csv

list.files(path="data", pattern="new_") 

skutkuje [1] "new_File1.csv" "new_File2.csv".

Ale w jaki sposób mogę odwrócić wyszukiwanie, np. Listę tylko File1.csv i File2.csv?

Odpowiedz

11

Wierzę, że będziesz musiał to zrobić samemu, ponieważ list.files nie obsługuje wyrażeń regularnych Perla (więc nie mogłeś zrobić czegoś takiego jak pattern=^(?!new_)).

to lista wszystkich plików, a następnie filtrować je grep:

grep(list.files(path="data"), pattern='new_', inv=T, value=T) 

grep(...) robi wzór pasujący; inv=T odwraca dopasowanie; value=T zwraca wartości dopasowań (tj. Nazwy plików) zamiast indeksów dopasowań.

4

Myślę, że najprostszym (i najprawdopodobniej najszybszym, jeśli włączysz czas programisty), będzie 2-krotnie uruchamiane list.files, jeden raz, aby wyświetlić listę wszystkich plików, a następnie drugi raz ze wzorem plików, których nie chcesz, a następnie użyj funkcji setdiff, aby znaleźć nazwy plików, które nie należą do grupy, którą chcesz wykluczyć.

Powiązane problemy