如何从压缩文件中读取多个文件?

时间:2015-08-20 08:55:28

标签: r csv

我想知道如何从R中的压缩文件夹(" test2.zip")中读取多个文件。

我编写了以下代码,该代码仅在压缩文件夹中只有一个文件时才有效。我需要知道如何从压缩文件夹中获取所有文件/多个文件,并使其在R中可读。 需要不同的.CSV文件作为数据帧。

test5 <- read.csv(unzip("path/test2.zip", files = NULL, list = FALSE, 
                  overwrite = TRUE, junkpaths = FALSE, exdir = ".", 
                  unzip = "internal",setTimes = FALSE))

此外,当我尝试将包含两个.csv文件的zip文件放入时会出现错误

  

文件错误(文件,&#34; rt&#34;):无效&#39;描述&#39;参数

如何读取压缩文件中包含的所有csv文件?

1 个答案:

答案 0 :(得分:1)

这是一种方法。首先,我将2个示例文件压缩为演示目的:

write.csv(data.frame(x = 1:2, y = 1:2), tf1 <- tempfile(fileext = ".csv"))
write.csv(data.frame(x = 11:12, y = 11:12), tf2 <- tempfile(fileext = ".csv"))
zip(zipfile <- tempfile(fileext = ".zip"), files = c(tf1, tf2))

现在,解压缩......

fns <- unzip(zipfile, junkpaths = TRUE, exdir = tempdir())
list2env(setNames(lapply(fns, read.csv, row.names = 1), basename(tools::file_path_sans_ext(fns))), globalenv())

数据框存储在变量中,这些变量已由文件名命名。