這是延續了我在這個問題上試圖執行的相同任務。在R中使用pubmed api(httr)來檢索摘要
使用下面的答案,我能夠找到感興趣的摘要的pubmed ID。
。現在,我試圖獲得這些摘要的標題和全文(作為2列資料框架,一個是標題,一個是摘要文本)。
我從api檔案中了解到,傳遞多個ID是可能的,所以我嘗試了下面的代碼。
library(XML)
library(httr)
library(glue)
library(dplyr)
####
####。
query = 'asthma[mesh] AND leukotrienes[mesh] AND 2009[pdat]'/span>
reqq = glue ('https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term={query}')
reqq = "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term=science[journal] AND breast cancer AND 2008[pdat]&usehistory=y"
op = GET(reqq)
content(op)
df_op <- op %>% xml2::read_xml() %>% xml2::as_list()
pmids <- df_op$eSearchResult$IdList %>% unlist(use.names = FALSE)
上面的代碼獲得了pmids作為一個字符,然后我試圖把它們傳遞給efetch
reqq1 = "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&id=pmids&rettype=abstract& retmode=xml"
op1 = GET(reqq1)
content(op1)
我得到一個錯誤說。ID串列是空的! 可能它沒有正確的ID。
然后我試圖改變ID字串的格式,使它們以逗號分隔,中間沒有引號或空格。
idc = paste(shQuote(pmids, type = "cmd"), collapse = " , ")
idc = gsub('", ', idc)
idc = gsub(' '/span>, '', idc)
# 然后將它們傳遞給同一個代碼。
reqq1 = "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&id=idc&rettype=abstract&retmode=xml"
op1 = GET(reqq1)
content(op1)
但我仍然得到與上述相同的錯誤。
我想實作的是獲得帶有這些摘要資料的xml檔案(然后最終將標題和摘要正文提取到資料框中)。
是否有可能將所有的ID傳入一次獲取中,還是必須使用一個回圈逐一發送? 如果你能提供一些指導或有一個能作業的簡短腳本,將非常感激。
謝謝你 uj5u.com熱心網友回復:
標籤: 上一篇:圖片按鈕沒有填滿網格系統
reqq1仍然只是一個字串。你可以使用glue來使用pmids的實際值。我想你可以同時查詢多個id,在這種情況下,你可以使用paste0(..., collapse = ',')來將id折疊成一個逗號分隔的字串。
reqq1 = glue("https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&id={paste0(pmids, collapse = ',')}&rettype=abstract&retmode=xml" )
op1 = GET(reqq1)
content(op1)
{xml_document}
<PubmedArticleSet>。
[1] <PubmedArticle>
< MedlineCitation Status="MEDLINE" Owner="NLM"> >。
<PMID Version="1"/span>> 19008416</PMID> 。 ..
[2] <PubmedArticle> 。
< MedlineCitation Status="MEDLINE" Owner="NLM"> >。
<PMID Version="1"/span>> 18927361</PMID> 。 ..
[3] <PubmedArticle> 。
< MedlineCitation Status="MEDLINE" Owner="NLM"> >。
<PMID Version="1"/span>> 18787170</PMID> 。 ..
[4] <PubmedArticle> 。
< MedlineCitation Status="MEDLINE" Owner="NLM"> >。
<PMID Version="1"/span>> 18487186</PMID> 。 ..
[5] <PubmedArticle>。
< MedlineCitation Status="MEDLINE" Owner="NLM"> >。
<PMID Version="1"/span>> 18239126</PMID> 。 ..
[6] <PubmedArticle> 。
< MedlineCitation Status="MEDLINE" Owner="NLM"> >。
<PMID Version="1"/span>> 18239125</PMID> 。 ..
