我的 R 函数消耗了太多内存。你能帮我优化一下吗?
My R function is consuming too much memory. Can you help me optimizing it?
我是 R 的新手,在优化函数方面遇到了问题。
我的职责是:
- 创建函数中指定的目录
- 从函数里面的link下载zip文件并解压到目录
- 如果在新的子文件夹下提取文件,则将提取的文件移动到主目录
- 删除子文件夹
它可以工作,但会消耗大量内存,并且需要 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 分钟
我是 R 的新手,在优化函数方面遇到了问题。
我的职责是:
- 创建函数中指定的目录
- 从函数里面的link下载zip文件并解压到目录
- 如果在新的子文件夹下提取文件,则将提取的文件移动到主目录
- 删除子文件夹
它可以工作,但会消耗大量内存,并且需要 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 分钟