У меня есть несколько файлов TIFF (каждый из которых принадлежит дате изображения) в одной папке, и я хочу создать списки на столько уникальных дат, сколько есть, а затем заполнить эти списки соответствующими файлами. В идеале мне бы хотелось иметь функцию, в которой пользователь просто вносил бы изменения в список дат, хотя я не смог запустить функцию, которая бы перебирала мой список дат. Вместо этого я попытался создать функцию и запускал ее для каждой уникальной даты.
dates <- list('20180420', '20180522', '20180623', '20180725', '20180810')
# Make a list of all files in the data directory
allFilesDataDirectory <- list.files(path = dataDirectory, pattern = 'TIF$')
# allFilesDataDirectory is a list of 60 TIFF files with the same naming convention along the lines of LC08_L1TP_038037_20180810_20180815_01_T1_B9
allDateLists <- NULL
for (d in dates){
fileFolderDate <- NULL
dynamicDateNames <- paste0('fileListL8', d)
assign(dynamicDateNames, fileFolderDate)
allDateLists <- c(allDateLists, dynamicDateNames)
}
myFunction <- function(date, fileNameList){
# files first
for (i in allFilesDataDirectory){
# Create a list out of the file name by splitting up the name wherever there is a _ in the name
splitFileName <- unlist(strsplit(i, "[_]"))
if(grepl(splitFileName[4], date) & (grepl('B', splitFileName[8]))){
fileNameList <- c(fileNameList, i)
print(i)
}
else {
print('no')
}
}
}
myFunction(date = '20180623', fileNameList = 'fileListL820180623')
Функция выполняется, но fileListL820180623 имеет значение NULL.
При жестком кодировании все работает и я не уверен в разнице. Я попытался использовать метод assign () (здесь не показан), но он ничего не сделал.
for (i in allFilesDataDirectory){
# Create a list out of the file name by splitting up the name wherever there is a _ in the name
splitFileName <- unlist(strsplit(i, "[_]"))
if(grepl(splitFileName[4], '20180623') & (grepl('B', splitFileName[8]))){
fileListL820180623 <<- c(fileListL820180623, i)
}
else {
print('no')
}
}