如何解决R语言解压.zip文件时报error 1 in extracting from zip的问题
问题根因
你的代码存在两处逻辑错误导致解压失败:
- 调用
list.files()时未开启full.names = TRUE参数,仅返回了zip文件的文件名,没有拼接temp目录的完整路径,R在当前工作目录找不到对应文件 - 解压循环中
unzip()的第一个参数传入了完整的file_names向量,而非每次循环对应的单个压缩包路径
修正后可运行代码
## 声明对应月份的变量 months <- c(202011:202012,202101:202110) ## 声明源文件存储目录 storage <- "C:\\Users\\...\\start" # 自动创建目录避免路径不存在报错 if(!dir.exists(storage)) dir.create(storage, recursive = TRUE) ## 生成所有下载链接 urls <- paste0("https://divvy-tripdata.s3.amazonaws.com/",months, "-divvy-tripdata.zip") temp <- tempdir() tempfile <- paste0(temp,"\\",months,".zip") ## 批量下载12个月的压缩包 for(i in seq(urls)){ download.file(urls[i],tempfile[i], mode="wb") } ## 关键:获取zip文件的完整路径,加full.names = TRUE file_names <- list.files(temp, pattern = "\\.zip$", full.names = TRUE) ## 循环解压,每次传入单个文件路径 for (i in seq(file_names)){ unzip(file_names[i], exdir = storage, overwrite = FALSE) } ## 可选:合并所有csv到一个数据框 all_csv <- list.files(storage, pattern = "\\.csv$", full.names = TRUE) library(data.table) merged_df <- rbindlist(lapply(all_csv, fread))
补充说明
如果仍出现报错,可以优先检查两个点:
- storage路径中的中文/特殊字符是否会导致R识别异常,尽量用纯英文路径
- 可以将
unzip()函数增加junkpaths = TRUE参数,避免压缩包内的嵌套目录导致的解压路径异常
内容的提问来源于stack exchange,提问作者Evgeny Politov
相关产品推荐
相关产品推荐

