【问题标题】:Working with pubmed api in R (httr) to retrieve abstracts [closed]在 R (httr) 中使用 pubmed api 来检索摘要 [关闭]
【发布时间】:2021-09-12 02:18:33
【问题描述】:

我正在尝试使用 httr 直接使用来自 R 的 pubmed api。有一些优秀的包可用,例如RISmedeasypubmed,但是对于这个特定的任务,我需要直接与 api 交互。

使用这组指令 (https://www.ncbi.nlm.nih.gov/books/NBK25500/),我从这段代码开始,但返回的是一个没有任何详细信息的列表或pmid。任何指导表示赞赏。或者如果您知道在此设置中使用 R 的特定教程。

library(XML)
library(httr)
library(glue)
 
query = 'asthma[mesh]+AND+leukotrienes[mesh]+AND+2009[pdat]'
 
reqq = glue ('https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term={query}')

op = GET(reqq)

我也尝试了这篇文章中的代码 (why i get that error : XML content does not seem to be XML),但它给出了这个错误Error in read_xml.raw(x, encoding = encoding, ...) : Opening and ending tag mismatch: meta line 17 and head [76]

【问题讨论】:

  • 无法复制。我对httr::GET(url = glue('https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term={query}'))没有意见
  • 您希望得到什么?我运行了这个,得到了 200 个 http 状态码和一个 xml 文档,如 contents(op)
  • 您的 op 包含一个带有 PMID 列表的有效 XML - 您在提取它们时遇到问题吗?
  • 感谢您的意见。 xml内容查看有困难,但使用contents(op)后,我可以了。

标签: r xml httr pubmed pubmed-api


【解决方案1】:

您可以读取 XML 响应并对其进行解析以收集已发布的 ID,例如:

library(magrittr) 
df_op <- op %>% xml2::read_xml() %>% xml2::as_list()

pmids <- df_op$eSearchResult$IdList %>% unlist(use.names = FALSE)

给出:

> pmids
 [1] "20113659" "20074456" "20046412" "20021457" "20008883" "20008181" "19912318" "19897276" "19895589"
[10] "19894390" "19852204" "19839969" "19811112" "19757309" "19749079" "19739647" "19706339" "19665766"
[19] "19648384" "19647860"

【讨论】:

  • 感谢您的帮助和提供代码。
  • 为什么选择 magrittr? R 4.1.0 现在在基本包中拥有自己的管道:|&gt;!
  • @Parfait,为什么(1):|&gt; 是一个不错的功能,但我不确定每个人都运行 R 4.1。这是最近的。例如,在企业中,人们很少从一开始就拥有最新的系统。说“magrittr %>%”是安全的。以及为什么:(2)我只是发现这种语法更容易阅读以用于学习目的(从左到右)。 (3) 此外 |> 在基本 R 代码中引入了向后兼容性问题,我认为这对于打算在不同平台上学习 R 基础知识的团队来说并不是真正的进步。
猜你喜欢
  • 1970-01-01
  • 2013-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多