R循环多个相互依赖的函数无法循环

时间:2018-04-27 21:37:54

标签: r loops google-analytics-api

我正在构建一个功能,可以从一长串配置文件中下载Google分析数据,并且需要一个可以容忍不返回数据的配置文件的循环函数。

问题是在循环开始和错误发生之间需要几个函数。

粘贴功能从idsvector中提取ID,然后在2个连续步骤中构建API查询。然后使用GetReportData()将其发送到API。列表中的第二个ID不返回API中的数据。目前,它从第一个配置文件下载数据,将其与主数据集合并然后停止。

    for (v in idsvector){
  view.id <- paste("ga:",v,sep="") #the View ID parameter need to have "ga:" in front of the ID 

  sourcequery.list <- Init(
    start.date = start.date,
    end.date =  end.date,
    dimensions = "ga:channelGrouping,ga:campaign,ga:source,ga:medium,ga:date",
    metrics = "ga:sessions,ga:bounces",
    table.id = view.id,
    max.results = 9999999
  )
}
  ga.sourcequery <- QueryBuilder(sourcequery.list)
                data <-  GetReportData(ga.sourcequery, token)
                error=function(e){dev.off(); return(NULL)}
    if (!is.null(data)) {

      data$Property <- view.id
      final.data<-rbind(sourcequery.data,data)

}
  else {
  next
  }
}

我如何调整它以使其循环并尝试下一个ID?

1 个答案:

答案 0 :(得分:0)

不确定这是否可以解决您的问题,但更好的方法是使用lapply

目前尚不清楚您使用哪个库来访问GA,因此我会为您编写一些代码:

library(data.table)
ga_load_property_data <- function(property) {
  # here goes GA API wrapper magic
}

data <- lapply(properties, ga_load_property_data)
data <- rbindlist(data, idcol = "property")

这样就可以将加载逻辑与迭代分开。