Saya sangat baru untuk R dan saya sedang berusaha memperbarui skrip R untuk beralih melalui serangkaian tabel .dbf yang dibuat menggunakan ArcGIS dan menghasilkan serangkaian grafik.
Saya memiliki direktori, C: \ Scratch, yang akan berisi semua file .dbf saya. Namun, ketika ArcGIS membuat tabel ini, itu juga termasuk file .dbf.xml. Saya ingin menghapus file .dbf.xml ini dari daftar file saya dan dengan demikian iterasi saya. Saya sudah mencoba mencari dan bereksperimen dengan ekspresi reguler tanpa hasil. Ini adalah ungkapan dasar yang saya gunakan (Tidak termasuk semua eksperimen):
files <- list.files(pattern = "dbf")
Adakah yang bisa memberi saya arahan?
glob2rx()
sering kali membantu.Jawaban:
$
pada akhirnya berarti bahwa ini adalah akhir dari string."dbf$"
akan bekerja juga, tetapi menambahkan\\.
(.
adalah karakter khusus dalam ekspresi reguler sehingga Anda perlu menghindarinya) memastikan bahwa Anda hanya mencocokkan file dengan ekstensi.dbf
(jika Anda memiliki.adbf
file misalnya ).sumber
ignore.case
argumen fungsi, jadilist.files(pattern = "\\.dbf$", ignore.case=TRUE)
. Dan lihat halaman bantuan untuk fungsi itu (?list.files
) untuk lebih jelasnya.Coba ini yang menggunakan gumpalan daripada ekspresi reguler sehingga hanya akan memilih nama file yang berakhiran
.dbf
sumber
Pasak pola untuk menemukan
"\\.dbf"
di akhir string menggunakan$
karakter:sumber
\` escape the
.` sekarang. Jadi orang bertanya-tanya mengapa ini diturunkan?Saya tidak terlalu baik dalam menggunakan ekspresi reguler yang canggih, jadi saya akan melakukan tugas tersebut dengan cara berikut:
Baris pertama hanya mencantumkan semua file dari direktori yang berfungsi. Yang kedua menjatuhkan semua yang mengandung ".xml" (grep mengembalikan indeks string seperti itu dalam vektor 'file'; berlangganan dengan indeks negatif menghapus entri yang sesuai dari vektor). Argumen "tetap" untuk fungsi grep hanyalah kemauan saya, karena saya biasanya menginginkannya untuk mencocokkan pola kasar tanpa regexprs mewah bergaya Perl, yang dapat mengejutkan saya.
Saya sadar bahwa solusi seperti itu hanya mencerminkan kekurangan dalam pendidikan saya, tetapi bagi seorang pemula mungkin berguna =) setidaknya itu mudah.
sumber
-
tanda sebelumnyagrep
. Saya membutuhkan solusi semacam ini untuk mengekstrak file tertentu dari file zip. Pertama, dapatkan daftar file dalam data.frame dan dapatkan file tertentu dan ekstrak nanti.lf <- unzip(file, list=T)[,1]; files.shp <- lf[grep(".shp", lf, fixed=T)]
Memberi Anda daftar file dengan path lengkap:
sumber