Список файлов, которые соответствуют критериям в R
У меня есть серия файлов. Каждое имя файла имеет два номера. Первое число - это номер поколения, и оно может быть числом от 0 до 250. Следующее число - это номер модели, который находится в диапазоне от 1 до 450.
Некоторые примеры:
Generation_Flux_0_Model_10.txt
Generation_Flux_0_Model_5.txt
Generation_Flux_1_Model_20.txt
Generation_Flux_2_Model_17.txt
Generation_Flux_5_Model_9.txt
Generation_Flux_55_Model_5.txt
Generation_Flux_117_Model_2.txt
Generation_Flux_8_Model_23.txt
Я хочу перечислить файлы только для указанного набора поколений. Например, получение файлов для поколений 1 и 8 должно содержать только список:
Generation_Flux_1_Model_20.txt и Generation_Flux_8_Model_23.txt.
Я написал следующую строку, которая приводит только к двоичному значению.
reactionFile = list.files(pattern = "\\.txt$")
generations = c(0, 1, 8)
str_extract(reactionFile,"\\d+")%in%generations
[1] ИСТИНА ИСТИНА ЛОЖЬ ЛОЖЬ ЛОЖЬ ЛОЖЬ ИСТИНА
- Есть ли способ указать этот критерий в параметре list.files(pattern="")?
- Кроме того, какой путь будет быстрее, чтобы выбрать только необходимые файлы? Перечислить все файлы в каталоге и получить подмножество или загрузить только необходимые файлы, используя list.files()?
1 ответ
Попробуйте этот шаблон:
list.files(pattern = "^Generation_Flux_[18]_Model_\\d+\\.txt$")
Это должно соответствовать только поколения 1 и 8, с любым номером модели.
Если у вас есть произвольный набор номеров поколений, вы можете динамически построить чередование, например
getGens <- function(v) {
pat <- paste0("(", paste0(v, collapse="|"), ")")
return(pat)
}
gens <- c(1, 50, 100, 150) # or any values you wish to use
pat <- paste0("^Generation_Flux_", getGens(gens), "_Model_\\d+\\.txt$")
list.files(pattern = pat)