有没有办法从 .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/