我的 R 函数消耗了太多内存。你能帮我优化一下吗?

My R function is consuming too much memory. Can you help me optimizing it?

我是 R 的新手,在优化函数方面遇到了问题。

我的职责是:

  1. 创建函数中指定的目录
  2. 从函数里面的link下载zip文件并解压到目录
  3. 如果在新的子文件夹下提取文件,则将提取的文件移动到主目录
  4. 删除子文件夹

它可以工作,但会消耗大量内存,并且需要 30 分钟才能在 2.7MB 的 zip 文件上完成如此简单的工作。

提前致谢!

create_dir <- function(directory) {
  path <- file.path(getwd(), directory)
  if (!file.exists(path)) {
    dir.create(path)
  }
  link <-
    "https://d396qusza40orc.cloudfront.net/rprog%2Fdata%2Fspecdata.zip"
  temp <- tempfile()
  download.file(link, temp, mode = "wb")
  unzip(temp, exdir = path)
  unlink(temp)
  existing_loc <- list.files(path, recursive = TRUE)
  for (loc in existing_loc) {
    if (length(grep("/", loc))) {
      file.copy(file.path(path, loc), path)
      file.remove(file.path(path, loc))
    }
  }
  dirs <- list.dirs(path)
  rm_dirs <- dirs[dirs != path]
  if (length(rm_dirs)) {
    for (dir in rm_dirs) {
      unlink(rm_dirs, recursive = TRUE)
    }
  }
}
create_dir("testDirectory")

谢谢,我找到问题了。这是因为在 OneDrive 上设置了一个工作目录,该目录会为该功能处理的 332 个文件的每次提取、移动和删除同步。 AntiVirus 还 运行 与 OneDrive 一起使用 CPU.

的 70% 导致我的 PC 冻结 30 分钟