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

R语言中如何将paste0输出作为httr包GET函数的请求地址

解决方法

你对GET函数的参数要求存在误解:GET只要求传入字符串类型的URL值,不是必须传入写死在引号里的字符串字面量。paste0的输出本身就是字符串,你不需要给它额外套一层引号,直接作为参数传入GET即可,完全不会有引号冲突问题。

# 直接将paste0整体作为GET的入参即可
test <- GET(
  paste0(
    "https://www.ebi.ac.uk/cgi-bin/ipd/imgt/hla/dpb_v2.cgi?pid=1&patdpb1=", 
    mDPB11cd.recipient, 
    "&patdpb2=", 
    mDPB12cd.recipient, 
    "&did=2&dondpb1=", 
    mDPB11cd.donor, 
    "&dondpb2=", 
    mDPB11cd.donor
  )
)

你之前写法出错是因为把paste0函数写在了引号内部,R会把引号里的内容识别为普通文本,不会执行函数逻辑,同时嵌套的双引号也不符合R的语法规则。

Tibble批量查询方案

如果需要对tibble的每一行发起查询,推荐用dplyr+purrr的行遍历方式批量处理,方便统一管理请求和返回结果:

library(httr)
library(dplyr)
library(purrr)

# 假设你的原始数据框名为hla_df
hla_df <- hla_df %>%
  rowwise() %>%
  mutate(
    # 生成每行对应的请求URL
    req_url = paste0(
      "https://www.ebi.ac.uk/cgi-bin/ipd/imgt/hla/dpb_v2.cgi?pid=1&patdpb1=", 
      mDPB11cd.recipient, 
      "&patdpb2=", 
      mDPB12cd.recipient, 
      "&did=2&dondpb1=", 
      mDPB11cd.donor, 
      "&dondpb2=", 
      mDPB11cd.donor
    ),
    # 发起请求,返回结果用列表存储避免列长度异常,Sys.sleep加延迟避免被封IP
    resp = list({
      Sys.sleep(1)
      GET(req_url)
    })
  ) %>%
  ungroup()

内容的提问来源于stack exchange,提问作者Nick Brown

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 03:21:03