Использование R для отображения всех файлов с указанным расширением
Я очень новичок в R и работаю над обновлением R script для повторения серии таблиц .dbf, созданных с использованием ArcGIS, и создания серии графиков.
У меня есть каталог C:\Scratch, который будет содержать все мои .dbf файлы. Однако, когда ArcGIS создает эти таблицы, он также содержит файл .dbf.xml. Я хочу удалить эти файлы .dbf.xml из списка файлов и, таким образом, свою итерацию. Я пробовал искать и экспериментировать с регулярными выражениями безрезультатно. Это основное выражение, которое я использую (исключая все различные эксперименты):
files <- list.files(pattern = "dbf")
Может ли кто-нибудь дать мне какое-то направление?
Ответы
Ответ 1
files <- list.files(pattern = "\\.dbf$")
$
в конце означает, что это конец строки. "dbf$"
тоже будет работать, но добавление \\.
(.
является специальным символом в регулярных выражениях, поэтому вам нужно его избежать), убедитесь, что вы сопоставляете только файлы с расширением .dbf
(в случае, если у вас есть файлы .adbf
).
Ответ 2
Попробуйте использовать glob, а не регулярные выражения, чтобы отображать только имена файлов, заканчивающиеся на .dbf
filenames <- Sys.glob("*.dbf")
Ответ 3
Подстройте шаблон, чтобы найти "\\.dbf"
в конце строки, используя символ $
:
list.files(pattern = "\\.dbf$")
Ответ 4
Я не очень хорошо использую сложные регулярные выражения, поэтому я бы выполнил такую задачу следующим образом:
files <- list.files()
dbf.files <- files[-grep(".xml", files, fixed=T)]
В первой строке перечислены все файлы из рабочего каталога. Во-вторых, все, что содержит ".xml" (grep возвращает индексы таких строк в векторных файлах, подмножество с отрицательными индексами удаляет соответствующие записи из вектора).
"фиксированный" аргумент для функции grep - это всего лишь моя прихоть, поскольку я обычно хочу, чтобы она отображала грубое сопоставление шаблонов без причудливых regexprs в стиле Perl, что может вызвать удивление для меня.
Я знаю, что такое решение просто отражает недостатки в моем образовании, но для новичков это может быть полезно =), по крайней мере, это легко.
Ответ 5
Предоставляет список файлов с полным путем:
Sys.glob(file.path(file_dir, "*.dbf")) ## file_dir = file containing directory