RGoogleAnalytics:如何选择性地添加查询参数?

RGoogleAnalytics:如何选择性地添加查询参数?,r,google-analytics,R,Google Analytics,我想编写一个通用函数,通过RGoogleAnalytics从Google Analytics检索数据,以便以编程方式创建不同的报告 每个报告的特定维度、指标、可选过滤器和段等都存储在配置文件中,以便我可以使用相应的配置文件名调用我的函数 对于某些报告,我必须使用段和筛选器,对于其他报告,这些值为空 我将所有这些值存储在名为my*的变量中,因此,例如,过滤器的myfilters、分段的mysegment等。为了每天循环一个日期范围,以减少采样问题,我有两个用于开始和结束日期的runner变量 我现

我想编写一个通用函数,通过RGoogleAnalytics从Google Analytics检索数据,以便以编程方式创建不同的报告

每个报告的特定维度、指标、可选过滤器和段等都存储在配置文件中,以便我可以使用相应的配置文件名调用我的函数

对于某些报告,我必须使用段和筛选器,对于其他报告,这些值为空

我将所有这些值存储在名为my*的变量中,因此,例如,过滤器的myfilters、分段的mysegment等。为了每天循环一个日期范围,以减少采样问题,我有两个用于开始和结束日期的runner变量

我现在自然尝试调用query$Init,如下所示:

query$Init(
    start.date = as.character(dateRunner),
    end.date = as.character(dateRunnerEnd),
    dimensions = mydimensions,
    metrics = mymetrics,
    max.results = mymaxresults,
    table.id = paste("ga:", myprofileId, sep=""),
    access_token = as.character(myaccess_token),
    sort = mysorting,
    segment = mysegment,
    filters = myfilters,
)
但是,当mysorting、mysegment或myfilters为空时,它们仍然以空值添加到查询中,从而产生错误消息

code : 400 Reason : Invalid value ''. Values must match the following regular expression: 'ga:.+'
当我调试并使用query$to.uri查看查询的GET版本时,我最终得到了

https://www.googleapis.com/analytics/v3/data/ga?start-date=2014-07-01&end-date=2014-07-01&dimensions=ga%3Adate&metrics=ga%3Asessions&segment=gaid%3A%3A1ZLAUAqqRYqvub-LR5Tx2g&sort=&filters=&max-results=100&ids=ga%3A5298259&access_token=...
只有当参数sort、segment和filter为空时,才可以通过在Init调用中根本不添加参数sort、segment和filter来防止该错误

但是我该怎么做呢?我的第一次尝试是

query$Init(start.date = as.character(dateRunner),
           end.date = as.character(dateRunnerEnd),
           dimensions = mydimensions,
           metrics = mymetrics,
           max.results = mymaxresults,
           table.id = paste("ga:", myprofileId, sep=""),
           access_token = as.character(myaccess_token),
           if (nchar(mysorting)!=0) {sort = mysorting},
           if (nchar(mysegment)!=0) {segment = mysegment},
           if (nchar(myfilters)!=0) {filters = myfilters},
)
然而,这给了我奇怪的效果,比如mysegment变量实际上被添加为sort变量和类似的变量,所以整个构造似乎是错误的

因此,我尝试在调试模式下直接在Init函数之前和之后手动设置这些值,例如query$sort=ga:date,但此操作之后相应的query$to.uri仅提供带有Init调用参数的URL,因此此操作根本不设置这些值。设置这些值的唯一方法似乎是在Init函数调用中实际使用它们

因此,除了创建一个非常复杂的if-else构造,检查现有参数的每个可能组合,从而使用不同的参数组合将整个Init调用复制六次之外,有没有一种方法可以选择性地将它们添加到Init函数之外