如何通过R的qualtRics包并行调用Qualtrics API获取两种格式数据?
如何用并行请求加速qualtRics包拉取两种格式的数据?
完全可以通过并行请求加快这两个拉取任务的处理速度——因为两个请求相互独立,无需等待其中一个完成再执行另一个。以下是具体实现方案:
实现步骤
1. 加载所需包
除qualtRics外,我们可以用furrr包(基于future框架)实现并行操作,它语法贴近常用的purrr,上手简单:
library(qualtRics) library(furrr)
2. 配置Qualtrics凭证(与你原代码一致)
qualtrics_api_credentials(api_key = "API KEY", base_url = "url", install = TRUE, overwrite = TRUE)
3. 设置并行执行计划
plan(multisession)会启动多个R会话并行处理任务,你可以根据电脑核心数调整workers参数:
# 比如设置4个并行会话,可根据硬件情况调整 plan(multisession, workers = 4)
4. 并行执行拉取任务
把breakout_sets的两个参数值存入列表,用future_map并行调用fetch_survey:
# 定义包含两种参数取值的列表 params_list <- list(TRUE, FALSE) # 并行拉取数据 survey_data <- future_map( params_list, ~ fetch_survey( surveyID = SURVEYID, unanswer_recode = -99, unanswer_recode_multi = 0, breakout_sets = .x, label = TRUE, force_request = TRUE, verbose = FALSE ) ) # 拆分结果,分别对应两种格式的数据 split_qualtrics <- survey_data[[1]] nonsplit_qualtrics <- survey_data[[2]]
5. 关闭并行会话(可选)
任务完成后可关闭并行会话释放资源:
plan(sequential)
注意事项
- Qualtrics API限流:Qualtrics对API请求有频率限制,并行请求不要过度激进,避免触发限流导致请求失败。
- 硬件资源占用:并行会话会消耗更多CPU和内存,
workers数量不要超过电脑可用核心数。
内容的提问来源于stack exchange,提问作者megmac
相关产品推荐
相关产品推荐

