Список файлов с несколькими условиями

У меня есть набор из 16 папок, каждая из которых имеет подпапки. Я хочу, чтобы код входил в каждую из этих 16 папок, проверял все подпути и импортировал только те файлы, которые удовлетворяют следующим условиям: либо они содержат "B02.jp2", либо "B03.jp2", либо "B04.jp2". ИЛИ "B08.jp2"

Вот скриншот файлов, которые я хочу выбрать

Вот код, который я использую до сих пор:

Этот работает отлично, но он использует только одно условие (B08.jp2$)

path <- "my/path/"
path <- list.files(path, recursive = TRUE, full.names = FALSE, pattern =  "B08.jp2$")

Я пытался объединить несколько шаблонов, но безуспешно: вот мои попытки

На основе: аргумента шаблона list.files в R, расширенного использования регулярного выражения

path <- "my/path/"
path <- list.files(path, recursive = TRUE, full.names = FALSE, pattern =  glob2rx("B08.jp2$*B03.jp2$"))
path<-character(0)

Основано на: R списках файлов с несколькими условиями

path <- "my/path/"
path <- list.files(path, recursive = TRUE, full.names = FALSE, pattern = "B08.jp2$ | B03.jp2$")
path<-character(0)

-- РЕДАКТИРОВАТЬ --

Я немного изменил свои данные и хотел бы импортировать их другим способом. Мои файлы теперь называются:

B02_10m.jp2
B03_10m.jp2
B04_10m.jp2
B08_10m.jp2

B05_20m.jp2
B06_20m.jp2
B07_20m.jp2
B8A_20m.jp2
B11_20m.jp2
B12_20m.jp2

Они расположены в разных подпапках. Вот так я использую recursive=TRUE,

Я пытался со следующими вариантами объединить условия, но это не работает.

S2 <- "my/path"
S2 <- list.files(S2, recursive = TRUE, full.names = TRUE, pattern =  "B0[2348]_10m.jp2$ | B(0[567]_20m)|(1[12]_20m)|(8A_20m).jp2$")

S2 <- "my/path"
S2 <- list.files(S2, recursive = TRUE, full.names = TRUE, pattern =  "B0[2348]_10m | B(0[567]_20m)|(1[12]_20m)|(8A_20m).jp2$")

1 ответ

Решение

Попробуй это:

list.files(path, recursive = TRUE, full.names = FALSE, 
           pattern = "B0[2348].jp2$")

Шаблон принимает регулярное выражение.

Другие вопросы по тегам