R: Распакуйте несколько файлов, каждый в новый подкаталог или переименуйте - PullRequest
0 голосов
/ 03 октября 2019

Мне удалось адаптировать некоторый код, чтобы разархивировать множество файлов. Однако при распаковке файлы с одинаковыми именами заменяются.

В моем рабочем каталоге есть файлы .zip. В этом каталоге я создал новую папку с именем unzip, в которую распаковал файлы.

dir.create(paste0(path, "/unzip/"))

ldply(.data = list.files(path = path, pattern = ".zip", full.names = T), .fun = unzip, exdir = paste0(path, "/unzip"), overwrite = FALSE)

Поскольку каждый из файлов .zip имеетта же архитектура, файлы будут заменены. Мой вопрос: 1) Есть ли способ указать, что каждый файл должен быть переименован, если двойной? 2) Другой способ - указать, что в папке unzip для каждого файла .zip создается новая папка, в которую распаковывается соответствующий файл.

THX

1 Ответ

1 голос
/ 03 октября 2019

Поскольку пакет plyr устарел, вместо него я буду использовать purrr::walk(). Я загружаю весь tidyverse, так как stringr::str_c() также используется. В следующем коде "zip_files" - это каталог, содержащий zip-файлы, а "zip_out" - это папка, в которую извлекаются файлы, оба находятся в рабочем каталоге. Последний содержит папку для каждого zip-файла. Папки не нужно создавать заранее, поскольку unzip() позаботится об этом за нас.

library(tidyverse)

file_names <- list.files("zip_files")
walk(file_names, ~ unzip(zipfile = str_c("zip_files/", .x), 
                         exdir = str_c("zip_out/", .x)))
...