R - использовать шаблон глобуса для извлечения текстовых файлов из нескольких каталогов

Я пытаюсь разработать способ извлечения текстовых файлов из нескольких каталогов с помощью fs:dir_ls и vroom.

Структура каталогов по существу M:/instrument/project/experiment/measurements/time_stamp/raw_data/files*.txt.

В идеале я хочу иметь возможность определить путь к уровню эксперимента, а затем позволить шаблону позаботиться обо всем остальном, например:

fs::dir_ls(path="M:/instrument/project/", glob = "experiment_*/2021-04-11*/raw_data/files*.txt", invert = TRUE, recurse = TRUE),

Итак, я читаю все файлы .txt в нескольких каталогах экспериментов за один раз, однако, когда я пробую этот подход, он возвращает все файлы из уровня проекта, а не из определенных папок, описанных шаблоном.

Я просмотрел другие вопросы SO по теме, рассмотренной здесь: Сопоставление с шаблоном с использованием подстановочного знака, файлы списка R с несколькими условиями, аргумент шаблона list.files в R, использование расширенного регулярного выражения и grep, используя вектор символов с несколькими шаблонами, но не Я не смог применить их к моей конкретной проблеме.

Любая помощь приветствуется, я понимаю, что ответ, скорее всего, смотрит мне в глаза, мне просто нужна помощь, чтобы увидеть его.

Спасибо


person DrBalticYaldie    schedule 11.05.2021    source источник
comment
Если вам нужны файлы из папки raw_data, можете ли вы попробовать? list.files('M:/instrument/project/experiment/measurements/time_stamp/raw_data/', pattern = 'files.*\\.txt')   -  person Ronak Shah    schedule 12.05.2021
comment
Однако спасибо, когда я пытаюсь это сделать, он возвращает пустой символ.   -  person DrBalticYaldie    schedule 13.05.2021
comment
Каков полный путь к файлам, которые вы хотите выбрать?   -  person Ronak Shah    schedule 13.05.2021
comment
Полный путь к одному из файлов - M:/Operetta/LED_Wound/operetta_export/plate_variability[540]/robot_seed_wide_plate_1[1614]/2021-05-10T113438+0100[1764]/SC_data/arpe19_10x_hoescht_h2dcfda_ints_morpho_SC[47280].result.A1[46991].Population - vaid_nuclei[0].txt   -  person DrBalticYaldie    schedule 13.05.2021
comment
и это файл arpe19 [...] .txt, который я хочу прочитать.   -  person DrBalticYaldie    schedule 13.05.2021


Ответы (1)


Вы можете попробовать следующее с list.files:

files <- list.files('M:/Operetta/LED_Wound/operetta_export/plate_variability[540]/robot_seed_wide_plate_1[1614]/2021-05-10T113438+0100[1764]/SC_data', pattern = 'arpe19*\\.txt')
person Ronak Shah    schedule 14.05.2021
comment
Спасибо за ваш ответ, этот подход работает, но ищет файлы только в одном каталоге, когда в идеале я хочу читать файлы из нескольких каталогов, то есть robot_plate_1-3. Таким образом, мне не нужно переопределять путь, начинающийся после plate_variability[540], включая временные метки, для каждого пакета файлов. Поэтому мне нужен шаблон glob / regex, который захватывает предыдущие каталоги, что-то вроде ~/robot_seed_wide_plate_*`/2021-05-//*/SC_Data/arpe19//*.txt. - person DrBalticYaldie; 17.05.2021
comment
@DrBalticYaldie Добавить recursive = TRUE, т.е. files <- list.files(..., pattern = ..., recursive = TRUE) - person Ronak Shah; 17.05.2021