如何解压缩文件,更改 csv table,然后再次压缩?

How to unzip file, change csv table, and zip again?

我有很多 .zip 文件。我需要:

在 R 中可以吗?对于许多文件来说,这是一项相当困难的任务,因为它是一个大数据集,我需要按顺序处理。除了 .csv 文件外,每个 zip 文件夹中还有一些其他文件。

使用 unzipzip 函数。在 lapply 循环中,我们首先创建一个 tempfile 用于 unzip 并且我们可以 read.csv。我们将 .csv 标识为 grep。然后编辑并反转该过程。只有 .csv 得到更新,其他文件保持不变。

toEdit <- c("df1.zip", "df2.zip", "df3.zip")

lapply(toEdit, function(z) {
  temp <- tempfile()
  temp <- unzip(z)
  r <- read.csv(temp[grep("csv", temp)])
  ## edit data
  r <- r/10
  ## end edit data
  nn <- gsub("zip", "csv", z)
  write.csv(r, nn)
  zip(z, nn)
  unlink(temp)
})

示例数据:

正在创建包含一个 .csv 文件和其中一些其他内容的 .zip 存档。

write("foo", "xy1.foo")
write("foo", "xy2.foo")
sapply(1:3, function(i) {
  write.csv(data.frame(matrix(1:12, 3, 4)), paste0("df", i, ".csv"))
  zip(paste0("df", i, ".zip"), paste0("df", i, ".csv"))
  zip(paste0("df", i, ".zip"), "xy1.foo")
  zip(paste0("df", i, ".zip"), "xy2.foo")
})