r - 从 .zip 中提取某些文件

标签 r unzip

有没有办法从 .zip 中选择性地提取归档名称与模式匹配的文件?

例如,如果我想使用所有 .csv文件中的文件并忽略其他文件。

目前的做法:

zipped_file_names <- unzip('some_archive.zip') # extracts everything, captures file names
csv_nms <-  grep('csv', zipped_file_names, ignore.case=TRUE, value=TRUE)
library('data.table')
comb_tbl <- rbindlist(lapply(csv_nms,  function(x) cbind(fread(x, sep=',', header=TRUE, 
                                                               stringsAsFactors=FALSE), 
                                                         file_nm=x) ), fill=TRUE ) 

我不只是选择要阅读的内容( csv_nms ),而是寻找一种方法来首先选择要提取的内容。

我目前使用的是 v3.2.2 (Windows)。

最佳答案

感谢@user20650 的评论。

使用两次调用 unzip .先用 list=TRUE只为获得 $Name对于文件。第二带 files=仅提取名称与模式匹配的文件。

  zipped_csv_names <- grep('\\.csv$', unzip('some_archive.zip', list=TRUE)$Name, 
                           ignore.case=TRUE, value=TRUE)
  unzip('some_archive.zip', files=zipped_csv_names)
  comb_tbl <- rbindlist(lapply(zipped_csv_names,  
                               function(x) cbind(fread(x, sep=',', header=TRUE,
                                                       stringsAsFactors=FALSE),
                                                 file_nm=x)), fill=TRUE ) 

关于r - 从 .zip 中提取某些文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32870863/

相关文章:

r - 在r中使用group_by函数后如何选择最低值或删除重复项

r - [R] 中的条件分组和汇总数据框

ios - SSZiparchive 简单解档

ant - 使用 Ant 将文件解压缩到它们所在的目录中

R 使用高阶函数为矩阵中的所有行提供附加标识

r - Sparklyr - 小数精度 8 超过最大精度 7

flash - Flash ActionScript 2 的压缩和解压缩工具

c# - 压缩和解压缩文件

ios - 从存档中解压缩单个文件

r - 如何向 R 列表中的多个数据帧添加新行