If they're all in the same directory, you can further reduce repetition.
psd_files <- list.files(
"C:/users/me/desktop/FAS (PSD)",
pattern = "^psd_.*zip$",
full.names = TRUE
)
datasets <- lapply(psd_files, FUN = psd.func)
datasets[[1]]
# <Printed version of the first data.frame>
Or, you could use loops to write the code for you.
psd_names <- gsub("_csv.zip", "", basename(psd_files))
code_lines <- paste0(psd_names, " <- psd.func(file = '", psd_names, "')")
cat(code_lines, sep = "\n")
# psd_coffee <- psd.func(file = 'psd_coffee')
# psd_grain <- psd.func(file = 'psd_grain')
# psd_fruits <- psd.func(file = 'psd_fruits')
Final tip: if you don't want to keep the extracted files, try using unz() to read directly from the zip file:
psd.func <- function(filet){
zip_path <- paste0("C:/Users/me/Desktop/FAS (PSD)/", file, "_csv.zip")
csv_name <- gsub("_csv.zip", ".csv", basename(zip_path))
zip_con <- unz(zip_path, csv_name)
on.exit(close(zip_con))
read.csv(zip_con)
}