Выбор файлов в каталоге на основе списка / символа, проблема с шаблоном = - PullRequest
0 голосов
/ 21 ноября 2018

Я пытаюсь выбрать файлы из папки «rawimages» на основе списка, состоящего из файлов из другой папки.Там будут тысячи файлов, я включил один ниже в качестве примера.Разница лишь в том, что изображения RAW не имеют «_hc», но в папке rawimages есть другие файлы.См. Ниже:

ValidateImages <- list.files("C:/Users/JS22/Desktop/Validated")
#example of validated image name: Pia1.2016-10-07.2056+N2009_hc.tif
#Gives list as character value

ToselectfromRAW <- list.files("C:/Users/JS22/Desktop/Raw", pattern = ??ValidateImages??)
#example of raw image name: Pia1.2016-10-07.2056+N2009.tif  

file.copy(from = c(ToselectfromRAW), to = "C:/Users/JS22/Desktop/Training_Set", overwrite = TRUE)
#move the selected images to the desired location

Я знаю, что это как-то связано с частью 'pattern =' функции list.files, но я не уверен, что именно.Я могу изменить список на список, если полезно:

ValidateImages<- as.list(list.files("C:/Users/JS22/Desktop/Validated", all.files = TRUE))

Любая помощь будет грандиозной!

(для использования в обучающем наборе randomForest, к вашему сведению)

1 Ответ

0 голосов
/ 21 ноября 2018

Вы можете получить список файлов в каталоге, а затем grep, который не включает _hc:

directory <- "C:/Users/JS22/Desktop/Raw"

# remove "_hc.tif" from input filenames to match on
pattern <- gsub("_hc.tif", "", ValidateImages)
pattern <- paste(gsub("([.|()\\^{}+$*?]|\\[|\\])", "\\\\\\1", pattern), collapse="|")

grep(list.files(directory), pattern=pattern, value=TRUE)

. В результате выдается следующее для предоставленных тестовых файлов:

[1] "Pia1.2016-10-08.0206+N2353_hc.tif" "Pia1.2016-10-08.0248+N752_hc.tif"  "Pia1.2016-10-12.0004+N1976_hc.tif"
[4] "Pia1.2016-10-12.1300+N3159_hc.tif"
...