使用adobeanalyticsr包多维度查询赋值数据框报错求助
问题描述
使用adobeanalyticsr包从Adobe Analytics拉取数据时,单维度调用能正常返回数据;但使用多维度时,直接在控制台运行aw_freeform_table()能正常输出结果,一旦将结果赋值给数据框就报错:
Error in write - -------table <<- aw_freeform_table(rsid = "xxxx", : could not find function "-<-"
相关代码示例
- 正常运行的代码(2个维度):
ROLN_data_v1 <<- aw_freeform_table(rsid = 'xxxx', company_id = company_id, date_range = c("2023-07-08","2023-07-09"), top=(500000), dimensions = c("daterangeday","evar10"), metrics = c("pageviews","visits","visitors","bounces","averagetimespentonsite","bounces"))
- 控制台正常输出的代码(3个维度):
aw_freeform_table(rsid = 'xxxx', company_id = company_id, date_range = c("2023-07-08","2023-07-10"), top=(500000), dimensions = c("daterangeday","evar52","evar10"), metrics = c("pageviews"))
- 赋值报错的代码(3个维度):
table <- aw_freeform_table(rsid = 'xxxx', company_id = company_id, date_range = c("2023-07-08","2023-07-10"), top=(500000), dimensions = c("daterangeday","evar52","evar10"), metrics = c("pageviews"))
错误输出
Requesting data... Progress [------------------------------------------------------------------------------------ ------------------------------------------------------------------] 0% in 2mDone! Returning 2725 x 4 data frame Error in write - -------table <<- aw_freeform_table(rsid = "xxxx", : could not find function "-<-"
问题原因
从错误信息里的write - -------table <<-可以看出,adobeanalyticsr包拉取数据时输出的进度条横线和返回提示信息,与赋值语句的输出发生了冲突,导致R错误地将进度条的横线解析成代码的一部分,进而触发找不到-<-函数的错误。
多维度查询数据量更大、拉取时间更长,进度条输出的内容更多,更容易出现这种解析冲突;而直接在控制台运行时,R会先处理完函数输出的信息再显示结果,不会和赋值操作的语法混淆。
另外,使用table作为变量名也不推荐——table()是R的内置函数,虽然不是本次报错的直接原因,但可能引发其他潜在问题。
解决方案
1. 禁用包的 verbose 输出
调用aw_freeform_table()时添加verbose = FALSE参数,关闭进度提示和返回信息,避免干扰赋值操作:
my_table <- aw_freeform_table(rsid = 'xxxx', company_id = company_id, date_range = c("2023-07-08","2023-07-10"), top=500000, dimensions = c("daterangeday","evar52","evar10"), metrics = c("pageviews"), verbose = FALSE)
如果该参数不生效,可全局设置关闭包的输出:
options(adobeanalyticsr.verbose = FALSE)
2. 避免使用内置函数名作为变量
把变量名从table改成自定义名称(比如my_aa_table),避免和R内置函数冲突:
my_aa_table <- aw_freeform_table(...)
3. 捕获输出信息
如果需要保留进度提示,可用suppressMessages()捕获函数的输出信息,同时完成赋值:
my_table <- suppressMessages(aw_freeform_table(rsid = 'xxxx', company_id = company_id, date_range = c("2023-07-08","2023-07-10"), top=500000, dimensions = c("daterangeday","evar52","evar10"), metrics = c("pageviews")))
内容的提问来源于stack exchange,提问作者SKR0121
相关产品推荐
相关产品推荐

