r - 在应用函数中应用?
问题描述
我有一个数据框,其中包含 2019 年每个月的开始和结束。
我需要获取 API,编写一个名称mydf
加月份的 CSV 文件(例如mydf-01.csv
,、mydf-02.csv
等)。
我需要获取数据,写入 CSV,清理内存以避免错误消息“内存不足”,然后继续下个月。
现在我有这个,但给了我错误:内存不足,因为所有 2019 年的预期数据约为 3GB。
我正在考虑制作一个for循环。但也许我可以使用另一个应用家庭功能?
月份:my_dates data.frame
这是它的外观:
from to
2019-01-01 2019-01-31
2019-02-01 2019-02-28
2019-03-01 2019-03-31
...
生成 12 个月的代码:
som <- function(x) as.Date(cut(as.Date(x), "month")) # start of month
eom <- function(x) som(som(x) + 32) - 1 # end of month
month_ranges <- function(from, to) {
s <- seq(som(from), as.Date(to), "month")
data.frame(from = pmax(as.Date(from), s), to = pmin(as.Date(to), eom(s)))
}
my_dates <- month_ranges(som("2019-01-01"), eom("2019-12-31"))
获取数据的代码:
目前它获取所有月份,将它们保存在内存中,最后将它们重新绑定在一起。但是,当月份范围过大时,这种方法会出错,因为数据超过 2GB。所以我希望每个月都将数据保存到 > CSV 并继续到下个月。
library(googleAuthR)
library(googleAnalyticsR)
my_fetch <- function(ga_id, d1, d2) {
google_analytics(ga_id,
date_range = c(d1, d2),
metrics = c("totalEvents"),
dimensions = c("ga:date", "ga:eventCategory", "ga:eventAction", "ga:eventLabel"),
anti_sample = TRUE,
anti_sample_batches = 1,
rows_per_call = 400)
}
my_fetches_fetches <- mapply(my_fetch, myviewID, my_dates$from, my_dates$to, SIMPLIFY = FALSE)
total <- do.call(rbind, my_fetches_fetches)
更新 1:
也许可以通过产生错误的“循环”,比如 API 超时继续到下个月?
解决方案
推荐阅读
- git - 从分支 x 创建一个分支,将分支 x 合并到其父分支并删除它。创建的分支会发生什么?
- amazon-web-services - errorType”:AWS Lambda 函数的“Runtime.HandlerNotFound”
- mongodb - 有没有办法在一个查询MongoDB中跳过不同的查找过滤器输出
- apache - 让我们用 Docker 加密证书
- ruby-on-rails - Rails:对来自循环数组的值
- javascript - 除非事件处理程序完成执行,否则反应会阻止重新渲染吗?
- c++ - c ++如何将右值引用传递给另一个函数
- python - 从python获取符号链接路径
- javascript - format.js 中的 Rails 5 未知格式错误
- php - 按一个列值对行进行分组,对另一列求和并计算出现次数