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

如何在R中调用NIH的findDrugInteractions API并处理返回JSON

在R中调用NIH findDrugInteractions API并格式化结果

1. 基础API调用实现

用httr发送GET请求,结合目标rxcui构造请求URL,再通过jsonlite解析返回的JSON数据:

library(httr)
library(jsonlite)

# 目标药物的rxcui编码
target_rxcui <- "88014"

# 构造API请求URL
api_url <- paste0("https://lhncbc.nlm.nih.gov/RxNav/interaction/list.json?rxcui=", target_rxcui)

# 发送请求并解析JSON
response <- GET(api_url)
interactions_raw <- fromJSON(content(response, "text"), simplifyVector = FALSE)

2. 提取关键药物相互作用信息

API返回的JSON嵌套层级深,直接用rrapply会生成冗余列,针对性提取核心字段可得到简洁的数据框:

# 定位交互组数据节点
interaction_groups <- interactions_raw$fullInteractionTypeGroup

# 初始化结果存储列表
formatted_interactions <- list()

# 遍历嵌套结构提取核心信息
for (group in interaction_groups) {
  for (interaction_type in group$fullInteractionType) {
    # 获取当前目标药物名称
    target_drug <- interaction_type$minConcept[1]$name
    # 遍历每一组药物配对交互
    for (pair in interaction_type$interactionPair) {
      interacting_drug <- pair$minConceptItem$name
      severity <- pair$severity
      interaction_details <- pair$interactionDescription
      
      # 存入列表
      formatted_interactions <- append(formatted_interactions, list(
        data.frame(
          target_drug = target_drug,
          interacting_drug = interacting_drug,
          severity = severity,
          interaction_details = interaction_details,
          stringsAsFactors = FALSE
        )
      ))
    }
  }
}

# 合并为最终结构化数据框
final_df <- do.call(rbind, formatted_interactions)

3. 数据框优化说明

  • 上述代码只提取目标药物、相互作用药物、严重程度、交互描述四个核心列,避免了rrapply拆解所有嵌套字段导致的冗余数据
  • 若需补充rxcui编码、来源等额外字段,可在遍历过程中从对应JSON节点提取(比如pair$minConceptItem$rxcui)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 03:45:55