R: импорт данных CSV на основе нескольких И и ИЛИ условий имен файлов

#r #regex #import #lapply

#r #регулярное выражение #импорт #lapply

Вопрос:

Мне нужна помощь в импорте данных CSV на основе нескольких И и ИЛИ условий имен файлов в R

У меня есть папка, содержащая файлы CSV (всего 820), каждый из которых содержит таблицу фиксированного и идентичного формата с разными значениями, заполняющими таблицы.

Файлы CSV можно разделить на несколько групп на основе трех переменных: species, RCP, MSY. Пожалуйста, смотрите ниже таблицу имен файлов CSV (file.dir) с указанными переменными таблица

У меня 82 вида (кода), 2 RCP и 5 MSYS, что в общей сложности составляет до 820 файлов / таблиц CSV. В настоящее время я использую этот код для импорта моего csv, но мои навыки ограничены только одним регулярным выражением для «pattern=»:

 all_paths <- list.files(path = "C:/#File.dir", pattern = "rcp85", full.names = TRUE)
  

Я хочу импортировать csv на основе:

  1. имена файлов, которые имеют одно из имен в списке видов (код), которое не является ни непрерывным, ни упорядоченным. т.е. Коды видов в имени файла: 60002,60005,600042,600058,600062,600089,600092,600100 (я хочу выделить только жирным шрифтом)
  2. импортируйте имена файлов CSV, содержащие либо msy1, либо msy3. Это означает, что я хочу, чтобы одновременно импортировались как msy1, так и msy3
  3. Импортируйте файлы в R, если выполнены оба условия в (1) и (2).

Могу ли я узнать, как мне улучшить / выразить прикрепленный скрипт для достижения моей цели? или мне нужно использовать для этого дополнительные пакеты?

Я надеюсь, что мои цели не слишком запутаны для тех, кто это читает. Пожалуйста, сообщите m, если потребуется дополнительная информация. Большое спасибо за ваше время!

Приветствую, Бу

Комментарии:

1. Работает ли это? list.files(path = "C:/#File.dir", pattern = "(60002|600042|600058|600092)-Biomass-\w -msy(1|3)\.csv", full.names = TRUE)

2. Это хорошо работает!! Спасибо!

Ответ №1:

Это идея, и это не тот ответ, который вы точно хотите, но было бы возможно, что вы можете составить список имен файлов с указанием вида и MSY следующим образом:

 list.files <- list()
for(species in species.list) {
  for(rcp in c("rcp45","rcp85")){
    for(msy in c("msy1","msy3")){
      list.files <- append(list.files, paste0(species,"-Biomass-",rcp,"-",msy,".csv"))
    }
  }
}
  

Комментарии:

1. Это отлично работает! Я могу импортировать данные на основе списка файлов, который я создал