即使设置了 rm(df),R 循环也会消耗 5GB RAM

标签 r

我有一个循环来进行 API 调用并使用数据写入 CSV。

将其写入本地磁盘后,我设置了 rm(df)。一开始很酷,但是在 10 次或更多调用 RAM 后,PC 通常开始变得非常缓慢。

Windows 任务管理器显示 RStudio 正在使用 5GB RAM(我的 PC 总共为 8RM)。

如果我在将 df 写入本地磁盘后将其删除,为什么会发生这种情况?

library(googleAuthR)
library(googleAnalyticsR)
library(tidyverse)

my_dates <- seq(as.Date("2019-10-25"), as.Date("2019-12-31"), by = 1)


my_fetch <- function(ga_id, d) {



       df <- google_analytics(ga_id,
                   date_range = c(d, d),
                   metrics = c("totalEvents"),
                   dimensions = c("ga:date", "ga:eventCategory", 
                   "ga:eventAction", "ga:eventLabel"),
                   anti_sample = TRUE)



      filename <- paste0("tvgo-web", "-", d, ".csv")
      print(filename)
      write.csv(df, filename, row.names = FALSE)
      rm(df)
      gc()

}



my_fetches_fetches <- mapply(my_fetch, myviewID, my_dates, SIMPLIFY = FALSE)

每个 API 调用作为 CSV 大小为 12 MB。它有:

dim(df)
[1] 135410      5

最佳答案

正如 @G5W 在评论中发布的那样,rm(df) 之后的 gc() 将释放内存。

关于即使设置了 rm(df),R 循环也会消耗 5GB RAM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60479466/

相关文章:

r - 如何反转 R Tmap 中发散的调色板?

r - R 的数据集 mtcars 中的第一列是什么?

r - R igraph 包如何计算 Closeness Centrality?

r - 如何循环遍历全局环境中的对象 - R

r - rmarkdown - 渲染数据帧列表

r - 在 R 中,从列表中提取对象的一部分

r - 将数据帧从一个转换为另一个

r - 在 R 中,如何在另一个包中的类上设置通用方法?

R:减少功能。钠处理

将 NA 替换为 NA 前后情况的平均值