如何用readr::read_csv指定压缩包中的特定CSV文件?
解决readr读取多文件ZIP时指定目标CSV的问题
哈哈,这个问题我之前也碰到过!其实你根本没遗漏参数,只是需要换个小技巧来精准指定ZIP包里的目标文件~
当readr的read_csv()遇到包含多个文件的ZIP时,它默认只会读取包里的第一个文件,所以会弹出你看到的“Multiple files in zip...”警告。要指定你需要的那个CSV,只需要在ZIP文件的路径后面加上::,再跟上目标文件名就行,具体用法如下:
示例代码
假设你的ZIP文件路径存在变量SSPdataZip中,你需要的目标CSV文件名为your_target_file.csv,修改后的代码应该是:
temp <- readr::read_csv(paste0(SSPdataZip, "::your_target_file.csv"), col_names = TRUE)
如果是直接写死路径的话,写法是:
temp <- readr::read_csv("SSPdata.zip::your_target_file.csv", col_names = TRUE)
小技巧:查看ZIP内的所有文件名
如果你不确定ZIP包里的具体文件名,可以用zip包的zip_list()函数来查看:
zip::zip_list(SSPdataZip)
这个函数会返回一个tibble,里面包含了ZIP内所有文件的名称、大小等信息,帮你准确找到需要的目标文件。
内容的提问来源于stack exchange,提问作者JerryN
相关产品推荐
相关产品推荐

