You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言循环读取xlsx列值替换POST请求参数的实现方法

R脚本循环遍历xlsx列值发送POST请求实现方案

前置准备

  • 先安装需要用到的依赖包,本地首次运行执行一次即可:
install.packages(c("httr", "jsonlite", "readxl"))

完整实现代码

# 加载依赖库
library(httr)
library(jsonlite)
library(readxl)

# --------------------------
# 提前赋值你原有逻辑里的固定参数,确保和实际值一致
url_base <- "你的接口域名前缀"
service <- "你的服务标识"
method <- "你的接口方法名"
token <- "你的鉴权token"
# --------------------------

# 1. 导入xlsx数据集,替换为你本地文件的实际路径
imported_file <- read_excel("C:/xxx/你的数据文件.xlsx")
# 提取所有需要遍历的code值,如果你的列名不是code,替换为实际列名即可
code_list <- imported_file$code

# 2. 初始化存储结果的列表
api_results <- list()

# 3. 循环遍历每个code发送请求
for (idx in seq_along(code_list)) {
  current_code <- code_list[idx]
  
  # 自动生成合法JSON请求体,避免手动拼接的转义、语法错误
  post_body <- toJSON(
    list(
      entity = "sigpac",
      code = current_code
    ),
    auto_unbox = TRUE
  )
  
  # 发送POST请求,逻辑和你原有脚本完全一致
  resp <- POST(
    url = paste(url_base, service, method, sep = "/"),
    body = post_body,
    add_headers(
      "Content-Type" = "application/json",
      "authorization" = token
    )
  )
  
  # 存储当前请求的对应结果
  api_results[[idx]] <- list(
    request_code = current_code,
    response_status = status_code(resp),
    response_data = content(resp, "parsed")
  )
  
  # 可选:打印进度,方便查看运行状态
  cat(sprintf("已完成 %d/%d 请求,code:%s,状态码:%d\n", 
              idx, length(code_list), current_code, status_code(resp)))
}

结果使用说明

  • 所有请求的返回结果都存在api_results列表中,可通过索引直接调取对应请求的信息,例如api_results[[2]]即可查看第2个请求的code、状态码和返回数据
  • 如果需要将所有返回的结构化数据合并为统一数据框,可安装dplyr包后运行dplyr::bind_rows(api_results)实现快速转换

注意事项

  • 如果目标接口有请求频率限制,可在循环末尾添加Sys.sleep(n)代码,n为每次请求的间隔秒数,根据接口要求调整即可
  • 如果导入的xlsx中code列存在空值,可在遍历前添加code_list <- na.omit(code_list)过滤空值,避免无效请求

内容的提问来源于stack exchange,提问作者Gordenbúh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 09:15:03