如何提取多个 zip 文件并在 R 中读取这些 csv? [复制]
Posted
技术标签:
【中文标题】如何提取多个 zip 文件并在 R 中读取这些 csv? [复制]【英文标题】:How can I extract multiple zip files and read those csvs in R? [duplicate] 【发布时间】:2017-01-31 09:43:51 【问题描述】:我需要一次解压缩多个文件并将其作为数据框添加到我的 R 仪表板中。
我目前正在使用此代码:
zipF<- "/Users/sahilverma13/Desktop/chat_data_2017-01-30_IST.zip"
outDir<-"/Users/sahilverma13/Desktop"
unzip(zipF,exdir=outDir)
但我必须为每个文件单独做。
zipF <- list.files(pattern="*.zip")
我尝试使用通配符,但它不起作用。
请帮忙。
【问题讨论】:
试试这个zipF <- list.files(pattern=".zip", full.names = T)
; sapply(zipF, unzip, exdir = ...)
【参考方案1】:
我经常使用 plyr 包中的 ldply 函数来读取或处理多个文件。
library(plyr)
# get all the zip files
zipF <- list.files(path = "/your/path/here/", pattern = "*.zip", full.names = TRUE)
# unzip all your files
ldply(.data = zipF, .fun = unzip, exdir = outDir)
正如理查德指出的那样,这并不完整(早上喝太多咖啡也不好)。
# get the csv files
csv_files <- list.files(path = outDir, pattern = "*.csv")
# read the csv files
my_data <- ldply(.data = csv_files, .fun = read.csv)
我非常喜欢 Joel 的评论。我已经习惯了使用 plyr 包,以至于我忘记了你也可以使用 sapply 函数。也许更好用!
【讨论】:
这是问题的一半,但不会将 csv 文件读入 R 这很好用,谢谢!除了只有一行 # read the csv files my_data 只是为了检查,但是:您安装了plyr
库吗? # read the csv files
是注释行。你有任何错误吗?
在 list.files 中,如果您的文件不在工作目录中,您可能需要添加 full.names = TRUE
。
在list.files中,也可以使用recursive = TRUE
获取一个目录及其子目录下的所有文件,并带有全名以上是关于如何提取多个 zip 文件并在 R 中读取这些 csv? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何在不实际提取文件的情况下使用 VBScript 读取 .zip 文件的内容?
如何使用 python 从位于同一目录中的多个 zip 文件夹中读取 csv 文件?