Использование R для отображения всех файлов с указанным расширением
Я очень новичок в R и работаю над обновлением R-скрипта для итерации через ряд таблиц .dbf, созданных с использованием ArcGIS, и создаю серию графиков.
У меня есть каталог C: \ Scratch, который будет содержать все мои .dbf-файлы. Однако, когда ArcGIS создает эти таблицы, он также содержит файл .dbf.xml. Я хочу удалить эти файлы .dbf.xml из списка файлов и, таким образом, свою итерацию. Я пробовал искать и экспериментировать с регулярными выражениями безрезультатно. Это основное выражение, которое я использую (исключая все различные эксперименты):
files <- list.files(pattern = "dbf")
Может ли кто-нибудь дать мне какое-то направление?
- Как опустить значения NA при одновременном вставке нескольких значений столбцов?
- Скомпилировать R-скрипт в автономный .exe-файл?
- Последовательные / подвижные суммы в векторе в R
- Как вы читаете в нескольких файлах .txt в R?
- Как определить, есть ли у вас интернет-соединение в R
- как получить значение, когда имя переменной передается как строка
- Поиск локальных максимумов и минимумов
- Создать таблицу PDF
- определить параметр $ right с переменной в R
- Альтернатива expand.grid для data.frames
- Импорт текстового файла в виде отдельной символьной строки
- вытащить p-значения и r-квадрат из линейной регрессии
- Использование '[' квадратная скобка как функция для lapply в R
files <- list.files(pattern = "\\.dbf$")
$
в конце означает, что это конец строки. "dbf$"
тоже будет работать, но добавляет \\.
( .
является специальным символом в регулярных выражениях, поэтому вам нужно его избежать), убедитесь, что вы сопоставляете только файлы с расширением .dbf
(в случае, если у вас есть файлы .adbf
).
Попробуйте это, в котором используются глобы, а не регулярные выражения, поэтому он будет выбирать только имена файлов, которые заканчиваются на .dbf
filenames <- Sys.glob("*.dbf")
Подстройте шаблон, чтобы найти "\\.dbf"
в конце строки, используя символ $
:
list.files(pattern = "\\.dbf$")
Я не очень хорош в использовании сложных регулярных выражений, поэтому я бы выполнил такую задачу следующим образом:
files <- list.files() dbf.files <- files[-grep(".xml", files, fixed=T)]
В первой строке перечислены все файлы из рабочего каталога. Во-вторых, все, что содержит «.xml» (grep возвращает индексы таких строк в векторных файлах, подмножество с отрицательными индексами удаляет соответствующие записи из вектора). «фиксированный» аргумент для функции grep - это всего лишь моя прихоть, поскольку я обычно хочу, чтобы она отображала грубое сопоставление шаблонов без причудливых regexprs в стиле Perl, что может вызвать удивление для меня.
Я знаю, что такое решение просто отражает недостатки в моем образовании, но для новичков это может быть полезно =), по крайней мере, это легко.
Дает вам список файлов с полным путем:
Sys.glob(file.path(file_dir, "*.dbf")) ## file_dir = file containing directory