#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 на основе:
- имена файлов, которые имеют одно из имен в списке видов (код), которое не является ни непрерывным, ни упорядоченным. т.е. Коды видов в имени файла: 60002,60005,600042,600058,600062,600089,600092,600100 (я хочу выделить только жирным шрифтом)
- импортируйте имена файлов CSV, содержащие либо msy1, либо msy3. Это означает, что я хочу, чтобы одновременно импортировались как msy1, так и msy3
- Импортируйте файлы в 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. Это отлично работает! Я могу импортировать данные на основе списка файлов, который я создал