2015-07-23 26 views
9

R có chức năng liệt kê các tệp trong một thư mục, là list.files(). Nó đi kèm với thông số tùy chọn pattern= để chỉ liệt kê các tệp phù hợp với mẫu.Liệt kê các tệp trong R không khớp với mẫu

tập tin trong thư mục data: File1.csv File2.csv new_File1.csv new_File2.csv

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

kết quả trong [1] "new_File1.csv" "new_File2.csv".

Nhưng làm cách nào để đảo ngược tìm kiếm, tức là chỉ liệt kê File1.csvFile2.csv?

Trả lời

11

Tôi tin rằng bạn sẽ phải tự mình làm, vì list.files không hỗ trợ regex Perl (vì vậy bạn không thể làm điều gì đó như pattern=^(?!new_)).

ví dụ: danh sách tất cả các file sau đó lọc chúng với grep:

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

Các grep(...) hiện các mô hình phù hợp; inv=T đảo ngược kết quả trùng khớp; value=T trả về giá trị của các kết quả phù hợp (ví dụ: tên tệp) thay vì chỉ mục của các kết quả phù hợp.

4

Tôi nghĩ rằng cách đơn giản nhất (và có thể nhanh nhất nếu bạn bao gồm lập trình viên) là chạy list.files 2 lần, một lần để liệt kê tất cả các tệp, sau đó là lần thứ hai với mẫu tệp bạn không muốn, sử dụng hàm setdiff để tìm những tên tệp không nằm trong nhóm mà bạn muốn loại trừ.

Các vấn đề liên quan